am 8def0f46: resolved conflicts for merge of ad892b2c to honeycomb-plus-aosp

* commit '8def0f46d1fa58d032931db6a6f242672f870158':
  CTS Verifier Packaging and Versioning
diff --git a/CleanSpec.mk b/CleanSpec.mk
index b84e1b6..b2474c2 100644
--- a/CleanSpec.mk
+++ b/CleanSpec.mk
@@ -44,6 +44,7 @@
 #$(call add-clean-step, find $(OUT_DIR) -type f -name "IGTalkSession*" -print0 | xargs -0 rm -f)
 #$(call add-clean-step, rm -rf $(PRODUCT_OUT)/data/*)
 
+$(call add-clean-step, rm -rf $(HOST_OUT_INTERMEDIATES)/EXECUTABLES/vm-tests-tf_intermediates)
 # ************************************************
 # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST
 # ************************************************
diff --git a/CtsTestCaseList.mk b/CtsTestCaseList.mk
index 08a0039..701423f 100644
--- a/CtsTestCaseList.mk
+++ b/CtsTestCaseList.mk
@@ -56,6 +56,7 @@
 	CtsTelephonyTestCases \
 	CtsTestStubs \
 	CtsTextTestCases \
+	CtsThemeTestCases \
 	CtsUtilTestCases \
 	CtsViewTestCases \
 	CtsWebkitTestCases \
diff --git a/CtsTestCoverage.mk b/CtsTestCoverage.mk
index 588c8f5..8e00913 100644
--- a/CtsTestCoverage.mk
+++ b/CtsTestCoverage.mk
@@ -19,22 +19,30 @@
 
 include cts/CtsTestCaseList.mk
 
-CTS_API_COVERAGE_EXE := $(HOST_OUT_EXECUTABLES)/cts-api-coverage
-DEXDEPS_EXE := $(HOST_OUT_EXECUTABLES)/dexdeps
+cts_api_coverage_exe := $(HOST_OUT_EXECUTABLES)/cts-api-coverage
+dexdeps_exe := $(HOST_OUT_EXECUTABLES)/dexdeps
 
-COVERAGE_OUT := $(HOST_OUT)/cts-api-coverage
-cts-test-coverage-report := $(COVERAGE_OUT)/test-coverage.html
-cts-verifier-coverage-report := $(COVERAGE_OUT)/verifier-coverage.html
+coverage_out := $(HOST_OUT)/cts-api-coverage
 
-CTS_API_COVERAGE_DEPENDENCIES := $(CTS_API_COVERAGE_EXE) $(DEXDEPS_EXE) $(ACP)
+api_text_description := $(SRC_API_DIR)/current.txt
+api_xml_description := $(coverage_out)/api.xml
+$(api_xml_description) : $(api_text_description) $(APICHECK)
+	$(hide) echo "Converting API file to XML: $@"
+	$(hide) mkdir -p $(coverage_out)
+	$(hide) $(APICHECK_COMMAND) -convert2xml $(api_text_description) $(api_xml_description)
 
-$(cts-test-coverage-report) : $(CTS_COVERAGE_TEST_CASE_LIST) $(CTS_API_COVERAGE_DEPENDENCIES)
+cts-test-coverage-report := $(coverage_out)/test-coverage.html
+cts-verifier-coverage-report := $(coverage_out)/verifier-coverage.html
+
+cts_api_coverage_dependencies := $(cts_api_coverage_exe) $(dexdeps_exe) $(api_xml_description) $(ACP)
+
+$(cts-test-coverage-report) : $(CTS_COVERAGE_TEST_CASE_LIST) $(cts_api_coverage_dependencies)
 	$(call generate-coverage-report,"CTS Tests API Coverage Report",\
-			$(CTS_COVERAGE_TEST_CASE_LIST),html,test-coverage.html)
+			$(CTS_COVERAGE_TEST_CASE_LIST),cts-test-apks,html,test-coverage.html)
 
-$(cts-verifier-coverage-report) : CtsVerifier $(CTS_API_COVERAGE_DEPENDENCIES)
+$(cts-verifier-coverage-report) : CtsVerifier $(cts_api_coverage_dependencies)
 	$(call generate-coverage-report,"CTS Verifier API Coverage Report",\
-			CtsVerifier,html,verifier-coverage.html)
+			CtsVerifier,cts-verifier-apks,html,verifier-coverage.html)
 
 .PHONY: cts-test-coverage
 cts-test-coverage : $(cts-test-coverage-report)
@@ -51,17 +59,18 @@
 # Arguments;
 #  1 - Name of the report printed out on the screen
 #  2 - Name of APK packages that will be scanned to generate the report
-#  3 - Format of the report
-#  4 - Output file name of the report
+#  3 - Name of variable to hold the calculated paths of the APKs
+#  4 - Format of the report
+#  5 - Output file name of the report
 define generate-coverage-report
-	$(foreach testcase,$(2),$(eval $(call add-testcase-apk,$(testcase))))
-	$(hide) mkdir -p $(COVERAGE_OUT)
-	$(hide) $(CTS_API_COVERAGE_EXE) -d $(DEXDEPS_EXE) -f $(3) -o $(COVERAGE_OUT)/$(4) $(TEST_APKS)
-	$(hide) echo $(1): file://$(ANDROID_BUILD_TOP)/$(COVERAGE_OUT)/$(4)
+	$(foreach testcase,$(2),$(eval $(call add-testcase-apk,$(3),$(testcase))))
+	$(hide) mkdir -p $(coverage_out)
+	$(hide) $(cts_api_coverage_exe) -d $(dexdeps_exe) -a $(api_xml_description) -f $(4) -o $(coverage_out)/$(5) $($(3))
+	$(hide) echo $(1): file://$(ANDROID_BUILD_TOP)/$(coverage_out)/$(5)
 endef
 
 # classes.dex is stripped from package.apk if dex-preopt is enabled,
 # so we use the copy that definitely includes classes.dex.
 define add-testcase-apk
-	TEST_APKS += $(call intermediates-dir-for,APPS,$(1))/package.apk.unaligned
+	$(1) += $(call intermediates-dir-for,APPS,$(2))/package.apk.unaligned
 endef
diff --git a/apps/CtsVerifier/Android.mk b/apps/CtsVerifier/Android.mk
index 1a39fd3..bd65552 100644
--- a/apps/CtsVerifier/Android.mk
+++ b/apps/CtsVerifier/Android.mk
@@ -25,7 +25,7 @@
 
 LOCAL_PACKAGE_NAME := CtsVerifier
 
-LOCAL_JNI_SHARED_LIBRARIES := libctsverifier_jni libaudioquality
+LOCAL_JNI_SHARED_LIBRARIES := libctsverifier_jni libaudioquality libcameraanalyzer
 
 LOCAL_SDK_VERSION := current
 
diff --git a/apps/CtsVerifier/AndroidManifest.xml b/apps/CtsVerifier/AndroidManifest.xml
index ada4216..cd9816f 100644
--- a/apps/CtsVerifier/AndroidManifest.xml
+++ b/apps/CtsVerifier/AndroidManifest.xml
@@ -24,6 +24,7 @@
 
     <uses-permission android:name="android.permission.BLUETOOTH" />
     <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
+    <uses-permission android:name="android.permission.CAMERA" />
     <uses-permission android:name="android.permission.RECORD_AUDIO" />
     <uses-permission android:name="android.permission.WAKE_LOCK" />
     
@@ -208,6 +209,15 @@
 
         <service android:name=".audioquality.ExperimentService" />
 
+        <activity android:name=".camera.analyzer.CameraAnalyzerActivity"
+                android:label="@string/camera_analyzer">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.cts.intent.category.MANUAL_TEST" />
+            </intent-filter>
+            <meta-data android:name="test_category" android:value="@string/test_category_camera" />
+        </activity>
+
    </application>
 
 </manifest> 
diff --git a/apps/CtsVerifier/include/colorchecker/colorchecker.h b/apps/CtsVerifier/include/colorchecker/colorchecker.h
new file mode 100644
index 0000000..5409b04
--- /dev/null
+++ b/apps/CtsVerifier/include/colorchecker/colorchecker.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2011 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.
+ */
+
+#ifndef COLORCHECKER_H
+#define COLORCHECKER_H
+
+/** Detects the 6x4 Xrite ColorChecker Classic pattern in the input image,
+ *   and calculates the average color value per patch.
+ *
+ *  All squares in the colorchecker pattern have to be fully visible,
+ *  and the whole pattern should fill at least 1/3 of the image
+ *  width. The pattern cannot be facing away from the camera at a very
+ *  large angle (>45 degrees). If multiple 6x4 grids can be found, the
+ *  one that is most front-facing will be returned.
+ *
+ *  The average color is returned as a floating-point value per
+ *  channel, linearized by an inverse gamma transform and normalized
+ *  to 0-1 (255 = 1). The linearization is only approximate.
+ *
+ *  @param inputImage Source image to detect the pattern in. Assumed
+ *                    to be a 3-channel interleaved image. Row-major
+ *  @param width Width of input image
+ *  @param height Height of input image
+ *  @param patchColors Output 6x4 3-channel image of average patch
+ *                     values.  Allocated by caller. Pass in NULL if
+ *                     the average values aren't needed.
+ *  @param outputImage Resized inputImage with overlaid grid detection
+ *                     diagnostics. Image width is approximately 160
+ *                     pixels. Pass in NULL if the diagnostic image
+ *                     isn't needed.
+ *  @param outputWidth Actual width of outputImage.
+ *  @param outputHeight Actual height of outputImage.
+ *
+ *  @return true if a grid was found, false otherwise. If false, the
+ *          input variables are unchanged.
+ */
+bool findColorChecker(const unsigned char *image,
+                      int width,
+                      int rowSpan,
+                      int height,
+                      float *patchColors,
+                      unsigned char **outputImage,
+                      int *outputWidth,
+                      int *outputHeight);
+
+
+#endif
diff --git a/apps/CtsVerifier/jni/audioquality/Android.mk b/apps/CtsVerifier/jni/audioquality/Android.mk
index 565cec2..8e827f7 100644
--- a/apps/CtsVerifier/jni/audioquality/Android.mk
+++ b/apps/CtsVerifier/jni/audioquality/Android.mk
@@ -20,7 +20,7 @@
 
 LOCAL_MODULE_TAGS := optional
 
-LOCAL_PRELINK_MODULE := false
+
 
 LOCAL_MODULE    := libaudioquality
 LOCAL_SRC_FILES := Fft.cpp Window.cpp GlitchTest.cpp MeasureRms.cpp \
diff --git a/apps/CtsVerifier/jni/cameraanalyzer/Android.mk b/apps/CtsVerifier/jni/cameraanalyzer/Android.mk
new file mode 100644
index 0000000..ccc0998
--- /dev/null
+++ b/apps/CtsVerifier/jni/cameraanalyzer/Android.mk
@@ -0,0 +1,34 @@
+# Copyright (C) 2011 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+include $(CLEAR_VARS)
+
+LOCAL_MODULE := libcameraanalyzer
+
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_SRC_FILES := com_android_cts_verifier_camera_analyzer_ColorChecker.cpp
+
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../include/colorchecker $(JNI_H_INCLUDE)
+
+LOCAL_STATIC_LIBRARIES := libcolorchecker
+LOCAL_SHARED_LIBRARIES := libjnigraphics \
+                          libstlport \
+                          libcutils \
+                          libutils
+
+include $(BUILD_SHARED_LIBRARY)
diff --git a/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_ColorChecker.cpp b/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_ColorChecker.cpp
new file mode 100644
index 0000000..4d247ab
--- /dev/null
+++ b/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_ColorChecker.cpp
@@ -0,0 +1,170 @@
+/*
+ * Copyright (C) 2011 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 "com_android_cts_verifier_camera_analyzer_ColorChecker.h"
+
+#include "utils/Log.h"
+#include "android/bitmap.h"
+#include "colorchecker.h"
+
+jboolean Java_com_android_cts_verifier_camera_analyzer_ColorChecker_findNative(
+    JNIEnv*      env,
+    jobject      thiz,
+    jobject      inputBitmap) {
+
+    // Verify that we can handle the input bitmap
+    AndroidBitmapInfo inputInfo;
+    AndroidBitmap_getInfo(env, inputBitmap, &inputInfo);
+    if (inputInfo.format != ANDROID_BITMAP_FORMAT_RGBA_8888 &&
+        inputInfo.format != ANDROID_BITMAP_FORMAT_RGB_565) {
+        LOGE("Only RGBA_8888 and RGB_565 bitmaps are supported, was given type %d.", inputInfo.format);
+        return JNI_FALSE;
+    }
+
+    // Get some references to the fields and class type of ColorChecker
+    jclass thizCls = env->GetObjectClass(thiz);
+    jfieldID patchId = env->GetFieldID(thizCls, "mPatchValues", "[F");
+    jfieldID outputId = env->GetFieldID(thizCls, "mDebugOutput", "Landroid/graphics/Bitmap;");
+    jfloatArray patchValues = (jfloatArray)env->GetObjectField(thiz, patchId);
+
+    // Get raw inputs and outputs ready
+
+    uint8_t *inputBuffer;
+    int result = AndroidBitmap_lockPixels(
+        env,
+        inputBitmap,
+        reinterpret_cast<void**>(&inputBuffer) );
+
+    if (result != ANDROID_BITMAP_RESUT_SUCCESS) {
+        LOGE("Unable to lock input bitmap");
+        return JNI_FALSE;
+    }
+
+    float *patchRawArray = env->GetFloatArrayElements(patchValues,
+                                                      NULL);
+
+    uint8_t *outputImage = NULL;
+    int outputWidth, outputHeight;
+
+    // Find the color checker
+    bool success;
+    uint8_t *inputBufferRGBA = NULL;
+    int inputStride;
+    bool freeInputRGBA = false;
+    switch (inputInfo.format) {
+        case ANDROID_BITMAP_FORMAT_RGB_565: {
+            // First convert to RGBA_8888
+            inputBufferRGBA = new uint8_t[inputInfo.width *
+                                          inputInfo.height *
+                                          4];
+            inputStride = inputInfo.width * 4;
+            uint8_t *outP = inputBufferRGBA;
+            for (int y = 0; y < inputInfo.height; y++ ) {
+                uint16_t *inP = (uint16_t*)(&inputBuffer[y * inputInfo.stride]);
+                for (int x = 0; x < inputInfo.width; x++) {
+                    *(outP++) = ( ((*inP) >> 0) & 0x001F) << 3;
+                    *(outP++) = ( ((*inP) >> 5) & 0x003F) << 2;
+                    *(outP++) = ( ((*inP) >> 11) & 0x001F) << 3;
+                    outP++;
+                    inP++;
+                }
+            }
+            freeInputRGBA = true;
+            break;
+        }
+        case ANDROID_BITMAP_FORMAT_RGBA_8888:
+            // Already in RGBA
+            inputBufferRGBA = inputBuffer;
+            inputStride = inputInfo.stride;
+            break;
+    }
+
+    success = findColorChecker(inputBufferRGBA,
+                               inputInfo.width,
+                               inputStride,
+                               inputInfo.height,
+                               patchRawArray,
+                               &outputImage,
+                               &outputWidth,
+                               &outputHeight);
+
+    // Clean up raw inputs/outputs
+    env->ReleaseFloatArrayElements(patchValues, patchRawArray, 0);
+    result = AndroidBitmap_unlockPixels(env, inputBitmap);
+    if (result != ANDROID_BITMAP_RESUT_SUCCESS) {
+        LOGE("Unable to unlock input bitmap");
+        return JNI_FALSE;
+    }
+
+    if (freeInputRGBA) {
+        delete inputBufferRGBA;
+    }
+
+    // Create debug bitmap from output image data
+    if (outputImage != NULL) {
+        // Get method handles, create inputs to createBitmap
+        jclass bitmapClass =
+                env->FindClass("android/graphics/Bitmap");
+        jclass bitmapConfigClass =
+                env->FindClass("android/graphics/Bitmap$Config");
+
+        jmethodID createBitmap = env->GetStaticMethodID(
+            bitmapClass, "createBitmap",
+            "(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;");
+
+        jmethodID getConfig = env->GetStaticMethodID(
+            bitmapConfigClass, "valueOf",
+            "(Ljava/lang/String;)Landroid/graphics/Bitmap$Config;");
+
+        // Create bitmap config and bitmap
+        jstring bitmapConfigValue = env->NewStringUTF("ARGB_8888");
+        jobject rgbaConfig = env->CallStaticObjectMethod(bitmapConfigClass,
+                                                         getConfig,
+                                                         bitmapConfigValue);
+        jobject outputBitmap = env->CallStaticObjectMethod(bitmapClass,
+                                                           createBitmap,
+                                                           outputWidth,
+                                                           outputHeight,
+                                                           rgbaConfig);
+        // Copy output image into it
+        uint8_t *outputBuffer;
+        int result = AndroidBitmap_lockPixels(
+            env,
+            outputBitmap,
+            reinterpret_cast<void**>(&outputBuffer) );
+
+        if (result != ANDROID_BITMAP_RESUT_SUCCESS) {
+            LOGE("Unable to lock output bitmap");
+            return JNI_FALSE;
+        }
+
+        memcpy(outputBuffer, outputImage, outputWidth * outputHeight * 4);
+
+        result = AndroidBitmap_unlockPixels(env, outputBitmap);
+        if (result != ANDROID_BITMAP_RESUT_SUCCESS) {
+            LOGE("Unable to unlock output bitmap");
+            return JNI_FALSE;
+        }
+
+        // Write new Bitmap reference into mDebugOutput class member
+        env->SetObjectField(thiz, outputId, outputBitmap);
+
+        delete outputImage;
+    }
+    if (!success) return JNI_FALSE;
+
+    return JNI_TRUE;
+}
diff --git a/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_ColorChecker.h b/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_ColorChecker.h
new file mode 100644
index 0000000..a9b4487
--- /dev/null
+++ b/apps/CtsVerifier/jni/cameraanalyzer/com_android_cts_verifier_camera_analyzer_ColorChecker.h
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2011 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.
+ */
+
+#ifndef JNI_CAMERAANALYZER_COLORCHECKER_H
+#define JNI_CAMERAANALYZER_COLORCHECKER_H
+
+#include <jni.h>
+#include <stdio.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+JNIEXPORT jboolean JNICALL
+Java_com_android_cts_verifier_camera_analyzer_ColorChecker_findNative(
+    JNIEnv *env,
+    jobject thiz,
+    jobject inputBitmap);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* JNI_CAMERAANALYZER_COLORCHECKER_H */
diff --git a/apps/CtsVerifier/jni/verifier/Android.mk b/apps/CtsVerifier/jni/verifier/Android.mk
index 98a4678..da4687d 100644
--- a/apps/CtsVerifier/jni/verifier/Android.mk
+++ b/apps/CtsVerifier/jni/verifier/Android.mk
@@ -21,7 +21,7 @@
 
 LOCAL_MODULE_TAGS := optional
 
-LOCAL_PRELINK_MODULE := false
+
 
 LOCAL_SRC_FILES := \
 		CtsVerifierJniOnLoad.cpp \
diff --git a/apps/CtsVerifier/jni/verifier/com_android_cts_verifier_os_FileUtils.cpp b/apps/CtsVerifier/jni/verifier/com_android_cts_verifier_os_FileUtils.cpp
index 14e58eb..9c69f1a 100644
--- a/apps/CtsVerifier/jni/verifier/com_android_cts_verifier_os_FileUtils.cpp
+++ b/apps/CtsVerifier/jni/verifier/com_android_cts_verifier_os_FileUtils.cpp
@@ -21,7 +21,6 @@
 #include <grp.h>
 #include <pwd.h>
 
-static jclass gFileStatusClass;
 static jfieldID gFileStatusDevFieldID;
 static jfieldID gFileStatusInoFieldID;
 static jfieldID gFileStatusModeFieldID;
@@ -95,19 +94,19 @@
 {
     jclass clazz = env->FindClass("com/android/cts/verifier/os/FileUtils");
 
-    gFileStatusClass = env->FindClass("com/android/cts/verifier/os/FileUtils$FileStatus");
-    gFileStatusDevFieldID = env->GetFieldID(gFileStatusClass, "dev", "I");
-    gFileStatusInoFieldID = env->GetFieldID(gFileStatusClass, "ino", "I");
-    gFileStatusModeFieldID = env->GetFieldID(gFileStatusClass, "mode", "I");
-    gFileStatusNlinkFieldID = env->GetFieldID(gFileStatusClass, "nlink", "I");
-    gFileStatusUidFieldID = env->GetFieldID(gFileStatusClass, "uid", "I");
-    gFileStatusGidFieldID = env->GetFieldID(gFileStatusClass, "gid", "I");
-    gFileStatusSizeFieldID = env->GetFieldID(gFileStatusClass, "size", "J");
-    gFileStatusBlksizeFieldID = env->GetFieldID(gFileStatusClass, "blksize", "I");
-    gFileStatusBlocksFieldID = env->GetFieldID(gFileStatusClass, "blocks", "J");
-    gFileStatusAtimeFieldID = env->GetFieldID(gFileStatusClass, "atime", "J");
-    gFileStatusMtimeFieldID = env->GetFieldID(gFileStatusClass, "mtime", "J");
-    gFileStatusCtimeFieldID = env->GetFieldID(gFileStatusClass, "ctime", "J");
+    jclass fileStatusClass = env->FindClass("com/android/cts/verifier/os/FileUtils$FileStatus");
+    gFileStatusDevFieldID = env->GetFieldID(fileStatusClass, "dev", "I");
+    gFileStatusInoFieldID = env->GetFieldID(fileStatusClass, "ino", "I");
+    gFileStatusModeFieldID = env->GetFieldID(fileStatusClass, "mode", "I");
+    gFileStatusNlinkFieldID = env->GetFieldID(fileStatusClass, "nlink", "I");
+    gFileStatusUidFieldID = env->GetFieldID(fileStatusClass, "uid", "I");
+    gFileStatusGidFieldID = env->GetFieldID(fileStatusClass, "gid", "I");
+    gFileStatusSizeFieldID = env->GetFieldID(fileStatusClass, "size", "J");
+    gFileStatusBlksizeFieldID = env->GetFieldID(fileStatusClass, "blksize", "I");
+    gFileStatusBlocksFieldID = env->GetFieldID(fileStatusClass, "blocks", "J");
+    gFileStatusAtimeFieldID = env->GetFieldID(fileStatusClass, "atime", "J");
+    gFileStatusMtimeFieldID = env->GetFieldID(fileStatusClass, "mtime", "J");
+    gFileStatusCtimeFieldID = env->GetFieldID(fileStatusClass, "ctime", "J");
 
     return env->RegisterNatives(clazz, gMethods, 
             sizeof(gMethods) / sizeof(JNINativeMethod)); 
diff --git a/apps/CtsVerifier/lib/Android.mk b/apps/CtsVerifier/lib/Android.mk
new file mode 100644
index 0000000..56a3fa8
--- /dev/null
+++ b/apps/CtsVerifier/lib/Android.mk
@@ -0,0 +1,17 @@
+#
+# Copyright (C) 2011 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 $(call all-subdir-makefiles)
diff --git a/apps/CtsVerifier/lib/colorchecker/Android.mk b/apps/CtsVerifier/lib/colorchecker/Android.mk
new file mode 100644
index 0000000..97f0089
--- /dev/null
+++ b/apps/CtsVerifier/lib/colorchecker/Android.mk
@@ -0,0 +1,33 @@
+# Copyright (C) 2011 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.
+#
+
+LOCAL_PATH := $(call my-dir)
+
+#####################
+# Build image analysis library
+
+include $(CLEAR_VARS)
+include external/stlport/libstlport.mk
+
+LOCAL_MODULE_TAGS := optional
+LOCAL_MODULE := libcolorchecker
+
+LOCAL_SRC_FILES += colorchecker.cpp
+LOCAL_C_INCLUDES += $(LOCAL_PATH)/../../include/colorchecker
+LOCAL_SHARED_LIBRARIES := libstlport \
+                          libcutils \
+                          libutils
+
+include $(BUILD_STATIC_LIBRARY)
diff --git a/apps/CtsVerifier/lib/colorchecker/colorchecker.cpp b/apps/CtsVerifier/lib/colorchecker/colorchecker.cpp
new file mode 100644
index 0000000..1e0ae97
--- /dev/null
+++ b/apps/CtsVerifier/lib/colorchecker/colorchecker.cpp
@@ -0,0 +1,714 @@
+/*
+ * Copyright (C) 2011 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.
+ */
+
+//#define LOG_NDEBUG 0
+#include <utils/Log.h>
+#include <utils/Timers.h>
+
+#include "colorchecker.h"
+#include "grouping.h"
+#include <string>
+#include <vector>
+#include <set>
+#include <algorithm>
+#include <cmath>
+
+const int totalChannels = 4; // Input image channel count
+const int colorChannels = 3; // Input image color channel count
+const float gammaCorrection = 2.2; // Assumed gamma curve on input
+const int thresholdSq = 675; // Threshold on pixel difference to be considered
+                             // part of the same patch
+
+class PixelId {
+  public:
+    int id;
+    const unsigned char *p;
+
+    PixelId(): id(0), p(NULL) {}
+
+    bool operator!=(const PixelId &other) const {
+        int dR = ((int)p[0] - other.p[0]) * ((int)p[0] - other.p[0]);
+        int dG = ((int)p[1] - other.p[1]) * ((int)p[1] - other.p[1]);
+        int dB = ((int)p[2] - other.p[2]) * ((int)p[2] - other.p[2]);
+        int distSq = dR + dG + dB;
+        if (distSq > thresholdSq) return true;
+        else return false;
+    }
+};
+
+class ImageField: public Field<PixelId> {
+  public:
+    ImageField(int width, int height, const unsigned char *data):
+            mWidth(width), mHeight(height), pData(data) {
+    }
+
+    PixelId operator() (int y, int x) const {
+        PixelId pId;
+        pId.p = pData + (y * mWidth + x ) * totalChannels;
+        if (mask.size() != 0) {
+            pId.id = mask[y][x];
+        }
+        return pId;
+    }
+
+    int getWidth() const { return mWidth; }
+    int getHeight() const { return mHeight; }
+  private:
+    int mWidth;
+    int mHeight;
+    const unsigned char *pData;
+};
+
+class PixelGroup {
+  public:
+    PixelGroup(int id, const ImageField *src):
+        mId(id),
+        mMinX(1e7),
+        mMinY(1e7),
+        mMaxX(0),
+        mMaxY(0),
+        mArea(0),
+        mSrc(src),
+        mRNeighbor(NULL),
+        mDNeighbor(NULL),
+        mLNeighbor(NULL),
+        mUNeighbor(NULL) {
+        mSum[0] = 0;
+        mSum[1] = 0;
+        mSum[2] = 0;
+    }
+
+    struct IdCompare {
+        bool operator() (const PixelGroup* l, const PixelGroup* r) const {
+            return l->getId() < r->getId();
+        }
+    };
+
+    void growGroup(int x, int y) {
+        if (x < mMinX) mMinX = x;
+        if (x > mMaxX) mMaxX = x;
+        if (y < mMinY) mMinY = y;
+        if (y > mMaxY) mMaxY = y;
+        mArea++;
+        const unsigned char *p = (*mSrc)(y,x).p;
+        mSum[0] += p[0];
+        mSum[1] += p[1];
+        mSum[2] += p[2];
+    }
+
+    int getId() const {
+        return mId;
+    }
+
+    int getArea() const {
+        return mArea;
+    }
+
+    int getBoundArea() const {
+        return (mMaxX - mMinX) * (mMaxY - mMinY);
+    }
+
+    float getApproxAspectRatio() const {
+        return ((float)(mMaxY - mMinY)) / (mMaxX - mMinX);
+    }
+
+    void getApproxCenter(int *x, int *y) const {
+        *x = (mMaxX + mMinX)/2;
+        *y = (mMaxY + mMinY)/2;
+    }
+
+    void getBoundingBox(int *x1, int *y1, int *x2, int *y2) const {
+        *x1 = mMinX;
+        *x2 = mMaxX;
+        *y1 = mMinY;
+        *y2 = mMaxY;
+    }
+
+    void getAvgValue(unsigned char *p) const {
+        p[0] = mSum[0] / mArea;
+        p[1] = mSum[1] / mArea;
+        p[2] = mSum[2] / mArea;
+    }
+
+    bool operator<(const PixelGroup &other) const {
+        return mArea < other.getArea();
+    }
+
+    typedef std::set<PixelGroup*, PixelGroup::IdCompare> IdSet;
+    typedef std::set<PixelGroup*, PixelGroup::IdCompare>::iterator IdSetIter;
+
+    void findNeighbors(IdSet &candidates) {
+        int cX, cY;
+        getApproxCenter(&cX, &cY);
+        int rDistSq = 1e9; // Larger than any reasonable image distance
+        int dDistSq = rDistSq;
+
+        for (IdSetIter neighbor = candidates.begin();
+             neighbor != candidates.end();
+             neighbor++) {
+            if (*neighbor == this) continue;
+            int nX, nY;
+            (*neighbor)->getApproxCenter(&nX, &nY);
+            // 'right' means slope between (-1/3, 1/3), positive X change
+            if ( (nX - cX) > 0 ) {
+                float slope = ((float)(nY - cY)) / (nX - cX);
+                if (slope > -0.33 && slope < 0.33) {
+                    int distSq = (nX - cX) * (nX - cX) + (nY - cY) * (nY - cY);
+                    if (distSq < rDistSq) {
+                        setRNeighbor(*neighbor);
+                        rDistSq = distSq;
+                    }
+                }
+            }
+            // 'down' means inv slope between (-1/3, 1/3), positive Y change
+            if ( (nY - cY) > 0) {
+                float invSlope = ((float)(nX - cX)) / (nY - cY);
+                if (invSlope > -0.33 && invSlope < 0.33) {
+                    int distSq = (nX - cX) * (nX - cX) + (nY - cY) * (nY - cY);
+                    if (distSq < dDistSq) {
+                        setDNeighbor(*neighbor);
+                        dDistSq = distSq;
+                    }
+                }
+            }
+        }
+        // Do reverse links if possible
+        if (getRNeighbor() != NULL) {
+            getRNeighbor()->setLNeighbor(this);
+        }
+        if (getDNeighbor() != NULL) {
+            getDNeighbor()->setUNeighbor(this);
+        }
+
+    }
+
+    void setRNeighbor(PixelGroup *rNeighbor) {
+        mRNeighbor = rNeighbor;
+    }
+
+    PixelGroup* getRNeighbor(int distance = 1)  {
+        PixelGroup *current = this;
+        for (int i=0; i < distance; i++) {
+            if (current != NULL) {
+                current = current->mRNeighbor;
+            } else break;
+        }
+        return current;
+    }
+
+    void setDNeighbor(PixelGroup *dNeighbor) {
+        mDNeighbor = dNeighbor;
+    }
+
+    PixelGroup* getDNeighbor(int distance = 1) {
+        PixelGroup *current = this;
+        for (int i=0; i < distance; i++) {
+            if (current != NULL) {
+                current = current->mDNeighbor;
+            } else break;
+        }
+        return current;
+    }
+
+    void setLNeighbor(PixelGroup *lNeighbor) {
+        mLNeighbor = lNeighbor;
+    }
+
+    PixelGroup* getLNeighbor(int distance = 1) {
+        PixelGroup *current = this;
+        for (int i=0; i < distance; i++) {
+            if (current != NULL) {
+                current = current->mLNeighbor;
+            } else break;
+        }
+        return current;
+    }
+
+    void setUNeighbor(PixelGroup *uNeighbor) {
+        mUNeighbor = uNeighbor;
+    }
+
+    PixelGroup* getUNeighbor(int distance = 1) {
+        PixelGroup *current = this;
+        for (int i=0; i < distance; i++) {
+            if (current != NULL) {
+                current = current->mUNeighbor;
+            } else break;
+        }
+        return current;
+    }
+
+    float distanceSqTo(const PixelGroup* other) {
+        int mX, mY;
+        getApproxCenter(&mX, &mY);
+        int oX, oY;
+        other->getApproxCenter(&oX, &oY);
+        int dx = (oX - mX);
+        int dy = (oY - mY);
+        return dx * dx + dy * dy;
+    }
+
+    float distanceTo(const PixelGroup* other) {
+        return sqrt( distanceSqTo(other) );
+    }
+
+  private:
+    int mId;
+    int mMinX, mMinY;
+    int mMaxX, mMaxY;
+    int mArea;
+    int mSum[3];
+    const ImageField *mSrc;
+
+    PixelGroup *mRNeighbor;
+    PixelGroup *mDNeighbor;
+    PixelGroup *mLNeighbor;
+    PixelGroup *mUNeighbor;
+};
+
+/* Scales input down by factor of outScale to output. Assumes input size is
+ * exactly output size times scale */
+void downsample(const unsigned char *input,
+                unsigned char *output,
+                int rowSpan,
+                int outWidth,
+                int outHeight,
+                int outScale) {
+    for (int oY = 0, iY = 0; oY < outHeight; oY++, iY += outScale) {
+        for (int oX = 0, iX = 0; oX < outWidth; oX++, iX += outScale) {
+            short out[3] = {0,0,0};
+            const unsigned char *in = input + iY * rowSpan + iX * totalChannels;
+            for (int j = 0; j < outScale; j++) {
+                for (int k = 0; k < outScale; k++) {
+                    for (int i = 0; i < colorChannels; i++) {
+                        out[i] += in[i];
+                    }
+                    in += totalChannels;
+                }
+                in += rowSpan - outScale * totalChannels;
+            }
+            output[0] = out[0] / (outScale * outScale);
+            output[1] = out[1] / (outScale * outScale);
+            output[2] = out[2] / (outScale * outScale);
+            output += totalChannels;
+        }
+    }
+}
+
+void drawLine(unsigned char *image,
+              int rowSpan,
+              int x0, int y0,
+              int x1, int y1,
+              int r, int g, int b) {
+    if ((x0 == x1) && (y0 == y1)) {
+        unsigned char *p = &image[(y0 * rowSpan + x0) * totalChannels];
+        if (r != -1) p[0] = r;
+        if (g != -1) p[1] = g;
+        if (b != -1) p[2] = b;
+        return;
+    }
+    if ( std::abs(x1-x0) > std::abs(y1-y0) ) {
+        if (x0 > x1) {
+            std::swap(x0, x1);
+            std::swap(y0, y1);
+        }
+        float slope = (float)(y1 - y0) / (x1 - x0);
+        for (int x = x0; x <= x1; x++) {
+            int y = y0 + slope * (x - x0);
+            unsigned char *p = &image[(y * rowSpan + x) * totalChannels];
+            if (r != -1) p[0] = r;
+            if (g != -1) p[1] = g;
+            if (b != -1) p[2] = b;
+        }
+    } else {
+        if (y0 > y1) {
+            std::swap(x0, x1);
+            std::swap(y0, y1);
+        }
+        float invSlope = (float)(x1 - x0) / (y1 - y0);
+        for (int y = y0; y <= y1; y++) {
+            int x = x0 + invSlope * (y - y0);
+            unsigned char *p = &image[(y*rowSpan + x) * totalChannels];
+            if (r != -1) p[0] = r;
+            if (g != -1) p[1] = g;
+            if (b != -1) p[2] = b;
+        }
+    }
+
+}
+bool findColorChecker(const unsigned char *image,
+                      int width,
+                      int rowSpan,
+                      int height,
+                      float *patchColors,
+                      unsigned char **outputImage,
+                      int *outputWidth,
+                      int *outputHeight) {
+    int64_t startTime = systemTime();
+
+    const int outTargetWidth = 160;
+    const int outScale = width / outTargetWidth;
+    const int outWidth = width / outScale;
+    const int outHeight = height / outScale;
+    LOGV("Debug image dimensions: %d, %d", outWidth, outHeight);
+
+    unsigned char *output = new unsigned char[outWidth * outHeight * totalChannels];
+
+    unsigned char *outP;
+    unsigned char *inP;
+
+    // First step, downsample for speed/noise reduction
+    downsample(image, output, rowSpan, outWidth, outHeight, outScale);
+
+    // Find connected components (groups)
+    ImageField outField(outWidth, outHeight, output);
+    Grouping(&outField);
+
+    // Calculate component bounds and areas
+    std::vector<PixelGroup> groups;
+    groups.reserve(outField.id_no);
+    for (int i = 0; i < outField.id_no; i++) {
+        groups.push_back(PixelGroup(i + 1, &outField));
+    }
+
+    inP = output;
+    for (int y = 0; y < outHeight; y++) {
+        for (int x = 0; x < outWidth; x++) {
+            groups[ outField(y, x).id - 1].growGroup(x, y);
+        }
+    }
+
+    // Filter out groups that are too small, too large, or have too
+    // non-square aspect ratio
+    PixelGroup::IdSet candidateGroups;
+
+    // Maximum/minimum width assuming pattern is fully visible and >
+    // 1/3 the image in width
+    const int maxPatchWidth = outWidth / 6;
+    const int minPatchWidth = outWidth / 3 / 7;
+    const int maxPatchArea = maxPatchWidth * maxPatchWidth;
+    const int minPatchArea = minPatchWidth * minPatchWidth;
+    // Assuming nearly front-on view of target, so aspect ratio should
+    // be quite close to square
+    const float maxAspectRatio = 5.f / 4.f;
+    const float minAspectRatio = 4.f / 5.f;
+    for (int i = 0; i < (int)groups.size(); i++) {
+        float aspect = groups[i].getApproxAspectRatio();
+        if (aspect < minAspectRatio || aspect > maxAspectRatio) continue;
+        // Check both boundary box area, and actual pixel count - they
+        // should both be within bounds for a roughly square patch.
+        int boundArea = groups[i].getBoundArea();
+        if (boundArea < minPatchArea || boundArea > maxPatchArea) continue;
+        int area = groups[i].getArea();
+        if (area < minPatchArea || area > maxPatchArea) continue;
+        candidateGroups.insert(&groups[i]);
+    }
+
+    // Find neighbors for candidate groups. O(n^2), but not many
+    // candidates to go through
+    for (PixelGroup::IdSetIter group = candidateGroups.begin();
+         group != candidateGroups.end();
+         group++) {
+        (*group)->findNeighbors(candidateGroups);
+    }
+
+    // Try to find a plausible 6x4 grid by taking each pixel group as
+    // the candidate top-left corner and try to build a grid from
+    // it. Assumes no missing patches.
+    float bestError = -1;
+    std::vector<int> bestGrid(6 * 4,0);
+    for (PixelGroup::IdSetIter group = candidateGroups.begin();
+         group != candidateGroups.end();
+         group++) {
+        int dex, dey; (*group)->getApproxCenter(&dex, &dey);
+        std::vector<int> grid(6 * 4, 0);
+        PixelGroup *tl = *group;
+        PixelGroup *bl, *tr, *br;
+
+        // Find the bottom-left and top-right corners
+        if ( (bl = tl->getDNeighbor(3)) == NULL ||
+             (tr = tl->getRNeighbor(5)) == NULL ) continue;
+        LOGV("Candidate at %d, %d", dex, dey);
+        LOGV("  Got BL and TR");
+
+        // Find the bottom-right corner
+        if ( tr->getDNeighbor(3) == NULL ) {
+            LOGV("  No BR from TR");
+            continue;
+        }
+        br = tr->getDNeighbor(3);
+        if ( br != bl->getRNeighbor(5) ) {
+            LOGV("  BR from TR and from BL don't agree");
+            continue;
+        }
+        br->getApproxCenter(&dex, &dey);
+        LOGV("  Got BR corner at %d, %d", dex, dey);
+
+        // Check that matching grid edge lengths are about the same
+        float gridTopWidth = tl->distanceTo(tr);
+        float gridBotWidth = bl->distanceTo(br);
+
+        if (gridTopWidth / gridBotWidth < minAspectRatio ||
+            gridTopWidth / gridBotWidth > maxAspectRatio) continue;
+        LOGV("  Got reasonable widths: %f %f", gridTopWidth, gridBotWidth);
+
+        float gridLeftWidth = tl->distanceTo(bl);
+        float gridRightWidth = tr->distanceTo(br);
+
+        if (gridLeftWidth / gridRightWidth < minAspectRatio ||
+            gridLeftWidth / gridRightWidth > maxAspectRatio) continue;
+        LOGV("  Got reasonable heights: %f %f", gridLeftWidth, gridRightWidth);
+
+        // Calculate average grid spacing
+        float gridAvgXGap = (gridTopWidth + gridBotWidth) / 2 / 5;
+        float gridAvgYGap = (gridLeftWidth + gridRightWidth) / 2 / 3;
+
+        // Calculate total error between average grid spacing and
+        // actual spacing Uses difference in expected squared distance
+        // and actual squared distance
+        float error = 0;
+        for (int x = 0; x < 6; x++) {
+            for (int y = 0; y < 4; y++) {
+                PixelGroup *node;
+                node = tl->getRNeighbor(x)->getDNeighbor(y);
+                if (node == NULL) {
+                    error += outWidth * outWidth;
+                    grid[y * 6 + x] = 0;
+                } else {
+                    grid[y * 6 + x] = node->getId();
+                    if (node == tl) continue;
+                    float dist = tl->distanceSqTo(node);
+                    float expXDist = (gridAvgXGap * x);
+                    float expYDist = (gridAvgYGap * y);
+                    float expDist =  expXDist * expXDist + expYDist * expYDist;
+                    error += fabs(dist - expDist);
+                }
+            }
+        }
+        if (bestError == -1 ||
+            bestError > error) {
+            bestGrid = grid;
+            bestError = error;
+            LOGV("  Best candidate, error %f", error);
+        }
+    }
+
+    // Check if a grid wasn't found
+    if (bestError == -1) {
+        LOGV("No color checker found!");
+    }
+
+    // Make sure black square is in bottom-right corner
+    if (bestError != -1) {
+        unsigned char tlValues[3];
+        unsigned char brValues[3];
+        int tlId = bestGrid[0];
+        int brId = bestGrid[23];
+
+        groups[tlId - 1].getAvgValue(tlValues);
+        groups[brId - 1].getAvgValue(brValues);
+
+        int tlSum = tlValues[0] + tlValues[1] + tlValues[2];
+        int brSum = brValues[0] + brValues[1] + brValues[2];
+        if (brSum > tlSum) {
+            // Grid is upside down, need to flip!
+            LOGV("Flipping grid to put grayscale ramp at bottom");
+            bestGrid = std::vector<int>(bestGrid.rbegin(), bestGrid.rend());
+        }
+    }
+
+    // Output average patch colors if requested
+    if (bestError != -1 && patchColors != NULL) {
+        for (int n = 0; n < 6 * 4 * colorChannels; n++) patchColors[n] = -1.f;
+
+        // Scan over original input image for grid regions, degamma, average
+        for (int px = 0; px < 6; px++) {
+            for (int py = 0; py < 4; py++) {
+                int id = bestGrid[py * 6 + px];
+                if (id == 0) continue;
+
+                PixelGroup &patch = groups[id - 1];
+                int startX, startY;
+                int endX, endY;
+                patch.getBoundingBox(&startX, &startY, &endX, &endY);
+
+                float sum[colorChannels] = {0.f};
+                int count = 0;
+                for (int y = startY; y <= endY; y++) {
+                    for (int x = startX; x < endX; x++) {
+                        if (outField(y,x).id != id) continue;
+                        for (int iY = y * outScale;
+                             iY < (y + 1) * outScale;
+                             iY++) {
+                            const unsigned char *inP = image +
+                                    (iY * rowSpan)
+                                    + (x * outScale * totalChannels);
+                            for (int iX = 0; iX < outScale; iX++) {
+                                for (int c = 0; c < colorChannels; c++) {
+                                    // Convert to float and normalize
+                                    float v = inP[c] / 255.f;
+                                    // Gamma correct to get back to
+                                    // roughly linear data
+                                    v = pow(v, gammaCorrection);
+                                    // Sum it up
+                                    sum[c] += v;
+                                }
+                                count++;
+                                inP += totalChannels;
+                            }
+                        }
+                    }
+                }
+                for (int c = 0 ; c < colorChannels; c++) {
+                    patchColors[ (py * 6  + px) * colorChannels + c ] =
+                            sum[c] / count;
+                }
+            }
+        }
+        // Print out patch colors
+        IF_LOGV() {
+            for (int y = 0; y < 4; y++) {
+                char tmpMsg[256];
+                int cnt = 0;
+                cnt = snprintf(tmpMsg, 256, "%02d:", y + 1);
+                for (int x = 0; x < 6; x++) {
+                    int id = bestGrid[y * 6 + x];
+                    if (id != 0) {
+                        float *p = &patchColors[ (y * 6 + x) * colorChannels];
+                        cnt += snprintf(tmpMsg + cnt, 256 - cnt,
+                                        "\t(%.3f,%.3f,%.3f)", p[0], p[1], p[2]);
+                    } else {
+                        cnt += snprintf(tmpMsg + cnt, 256 - cnt,
+                                        "\t(xxx,xxx,xxx)");
+                    }
+                }
+                LOGV("%s", tmpMsg);
+            }
+        }
+    }
+
+    // Draw output if requested
+    if (outputImage != NULL) {
+        *outputImage = output;
+        *outputWidth = outWidth;
+        *outputHeight = outHeight;
+
+        // Draw all candidate group bounds
+        for (PixelGroup::IdSetIter group = candidateGroups.begin();
+             group != candidateGroups.end();
+             group++) {
+
+            int x,y;
+            (*group)->getApproxCenter(&x, &y);
+
+            // Draw candidate bounding box
+            int x0, y0, x1, y1;
+            (*group)->getBoundingBox(&x0, &y0, &x1, &y1);
+            drawLine(output, outWidth,
+                     x0, y0, x1, y0,
+                     255, 0, 0);
+            drawLine(output, outWidth,
+                     x1, y0, x1, y1,
+                     255, 0, 0);
+            drawLine(output, outWidth,
+                     x1, y1, x0, y1,
+                     255, 0, 0);
+            drawLine(output, outWidth,
+                     x0, y1, x0, y0,
+                     255, 0, 0);
+
+            // Draw lines between neighbors
+            // Red for to-right and to-below of me connections
+            const PixelGroup *neighbor;
+            if ( (neighbor = (*group)->getRNeighbor()) != NULL) {
+                int nX, nY;
+                neighbor->getApproxCenter(&nX, &nY);
+                drawLine(output,
+                         outWidth,
+                         x, y, nX, nY,
+                         255, -1, -1);
+            }
+            if ( (neighbor = (*group)->getDNeighbor()) != NULL) {
+                int nX, nY;
+                neighbor->getApproxCenter(&nX, &nY);
+                drawLine(output,
+                         outWidth,
+                         x, y, nX, nY,
+                         255, -1, -1);
+            }
+            // Blue for to-left or to-above of me connections
+            if ( (neighbor = (*group)->getLNeighbor()) != NULL) {
+                int nX, nY;
+                neighbor->getApproxCenter(&nX, &nY);
+                drawLine(output,
+                         outWidth,
+                         x, y, nX, nY,
+                         -1, -1, 255);
+            }
+            if ( (neighbor = (*group)->getUNeighbor()) != NULL) {
+                int nX, nY;
+                neighbor->getApproxCenter(&nX, &nY);
+                drawLine(output,
+                         outWidth,
+                         x, y, nX, nY,
+                         -1, -1, 255);
+            }
+        }
+
+        // Mark found grid patch pixels
+        if (bestError != -1) {
+            for (int x=0; x < 6; x++) {
+                for (int y =0; y < 4; y++) {
+                    int id = bestGrid[y * 6 + x];
+                    if (id != 0) {
+                        int x0, y0, x1, y1;
+                        groups[id - 1].getBoundingBox(&x0, &y0, &x1, &y1);
+                        // Fill patch pixels with blue
+                        for (int px = x0; px < x1; px++) {
+                            for (int py = y0; py < y1; py++) {
+                                if (outField(py,px).id != id) continue;
+                                unsigned char *p =
+                                        &output[(py * outWidth + px)
+                                                * totalChannels];
+                                p[0] = 0;
+                                p[1] = 0;
+                                p[2] = 255;
+
+                            }
+                        }
+                        drawLine(output, outWidth,
+                                 x0, y0, x1, y1,
+                                 0, 255, 0);
+                        drawLine(output, outWidth,
+                                 x0, y1, x0, y1,
+                                 0, 255, 0);
+                    }
+                }
+            }
+        }
+
+    } else {
+        delete output;
+    }
+
+    int64_t endTime = systemTime();
+    LOGV("Process time: %f ms",
+         (endTime - startTime) / 1000000.);
+
+    if (bestError == -1) return false;
+
+    return true;
+}
diff --git a/apps/CtsVerifier/lib/colorchecker/grouping.h b/apps/CtsVerifier/lib/colorchecker/grouping.h
new file mode 100755
index 0000000..3125f55
--- /dev/null
+++ b/apps/CtsVerifier/lib/colorchecker/grouping.h
@@ -0,0 +1,165 @@
+/*

+ * Copyright (C) 2011 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 <vector>

+#include <utility>

+

+#ifndef FILTERPACK_CALIBRATION_GROUPING_H

+#define FILTERPACK_CALIBRATION_GROUPING_H

+

+// To use the Grouping function, derive one class from Field.

+// Field class provides the interface for the Grouping function.

+// FF_ID is the pixel class used to compare values,

+//  != operator must be defined in this class

+//  region number of the pixel

+

+typedef std::vector <std::vector<int> > MASK;

+typedef std::pair<int, int> POS;

+// FF_ID needs to implement the operator !=

+// bool  operator != (const FF_ID &id)

+template <class FF_ID>

+class Field {

+  public:

+    int id_no;

+    MASK mask;

+    virtual FF_ID operator () (int y, int x) const =0 ;

+    virtual int getWidth()  const = 0;

+    virtual int getHeight()  const= 0;

+    virtual ~Field() {}

+};

+

+template < class FF_ID>

+void FloodFill(int sx,

+               int sy,

+               int id_no,

+               const FF_ID &id,

+               Field<FF_ID> *pField,

+               POS *new_pos) {

+    std::vector<POS> stack;

+    stack.push_back(POS(sx,sy));

+    while (stack.size() > 0) {

+        sx = stack.back().first;

+        sy = stack.back().second;

+        stack.pop_back();

+

+        // fill the current line

+        int x;

+        for (x = sx-1; x >= 0; x--)

+        {

+            if (pField->mask[sy][x]!=0) break;

+            if (id != (*pField)(sy,x)) {

+                new_pos->first = x;

+                new_pos->second =sy;

+                break;

+            }

+            pField->mask[sy][x] = id_no;

+        }

+        int startx = x;

+        for (x = sx;x < pField->getWidth(); x++) {

+            if (pField->mask[sy][x]!=0) break;

+            if (id != (*pField)(sy,x)) {

+                new_pos->first = x;

+                new_pos->second =sy;

+                break;

+            }

+            pField->mask[sy][x] = id_no;

+        }

+        int endx = x;

+        if (endx >= pField->getWidth()) endx = pField->getWidth() - 1;

+        if (startx < 0) startx = 0;

+        // push the adjacent spans to the stack

+        if (sy>0) {

+            int bNew = true;

+            for (x = endx; x >= startx; x--) {

+                if (pField->mask[sy-1][x] != 0 || id != (*pField)(sy-1,x) ) {

+                    bNew = true;

+                    continue;

+                }

+                if (bNew) {

+                    stack.push_back( POS(x, sy-1));

+                    bNew = false;

+                }

+            }

+        }

+        if (sy < (pField->getHeight() - 1)) {

+            int bNew = true;

+            for (x = endx; x >= startx; x--) {

+                if (pField->mask[sy+1][x]!=0 || id != (*pField)(sy+1,x)) {

+                    bNew = true;

+                    continue;

+                }

+                if (bNew) {

+                    stack.push_back( POS(x, sy+1));

+                    bNew = false;

+                }

+            }

+        }

+    }

+}

+

+// Group the pixels in Field based on the FF_ID != operator.

+// All pixels will be labeled from 1. The total number of unique groups(regions)

+// is (pField->id_no - 1) after the call

+// The labeasl of the pixels are stored in the mask member of Field.

+

+template <class FF_ID>

+void Grouping(Field <FF_ID> *pField) {

+    int width = pField->getWidth();

+    int height = pField->getHeight();

+    pField->mask =  MASK(height, std::vector<int> (width, 0) );

+

+    FF_ID id;

+    pField->id_no = 1;

+    int sx = width / 2, sy = height / 2;

+    POS new_pos(-1,-1);

+    while (1) {

+        id = (*pField)(sy,sx);

+        int id_no = pField->id_no;

+        new_pos.first = -1;

+        new_pos.second = -1;

+        FloodFill(sx, sy, id_no, id, pField, &new_pos);

+        if (new_pos.first < 0) // no new position found, during the flood fill

+        {

+            const int kNumOfRetries = 10;

+            // try 10 times for the new unfilled position

+            for (int i = 0; i < kNumOfRetries; i++) {

+                sx = rand() % width;

+                sy = rand() % height;

+                if (pField->mask[sy][sx] == 0) {

+                    new_pos.first = sx;

+                    new_pos.second = sy;

+                    break;

+                }

+            }

+            if (new_pos.first < 0) { // still failed, search the whole image

+                for (int y = 0; y < height && new_pos.first < 0; y++)

+                    for (int x = 0; x < width; x++) {

+                        if (pField->mask[y][x] == 0) {

+                            new_pos.first = x;

+                            new_pos.second = y;

+                            break;

+                        }

+                    }

+            }

+            if (new_pos.first < 0) break; // finished

+        }

+        sx = new_pos.first;

+        sy = new_pos.second;

+        pField->id_no++;

+    }

+}

+

+#endif

diff --git a/apps/CtsVerifier/res/layout/ca_main.xml b/apps/CtsVerifier/res/layout/ca_main.xml
new file mode 100644
index 0000000..98ec049
--- /dev/null
+++ b/apps/CtsVerifier/res/layout/ca_main.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="utf-8"?>
+
+<!-- Copyright (C) 2011 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+  android:orientation="vertical" android:layout_width="fill_parent"
+  android:layout_height="fill_parent">
+
+  <Button android:id="@+id/runbutton" android:layout_width="fill_parent"
+    android:layout_height="wrap_content" android:text="@string/ca_run_label" />
+
+  <TextView android:id="@+id/resulttext" android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:text="@string/ca_result_label"
+            android:textSize="15sp" />
+
+  <LinearLayout android:orientation="horizontal"
+    android:layout_width="fill_parent" android:layout_height="wrap_content">
+
+    <SurfaceView android:id="@+id/cameraview" android:layout_height="match_parent"
+      android:layout_width="match_parent"
+      android:layout_weight="1" />
+
+    <ImageView android:id="@+id/resultview" android:layout_height="match_parent"
+      android:layout_width="match_parent"
+      android:layout_weight="1" />
+
+  </LinearLayout>
+</LinearLayout>
+
diff --git a/apps/CtsVerifier/res/values/strings.xml b/apps/CtsVerifier/res/values/strings.xml
index 80dbe95..b917b95 100644
--- a/apps/CtsVerifier/res/values/strings.xml
+++ b/apps/CtsVerifier/res/values/strings.xml
@@ -29,6 +29,7 @@
     <!-- Strings for TestListActivity -->
     <string name="test_list_title">Manual Test List</string>
     <string name="test_category_audio">Audio</string>
+    <string name="test_category_camera">Camera</string>
     <string name="test_category_device_admin">Device Administration</string>
     <string name="test_category_networking">Networking</string>
     <string name="test_category_sensors">Sensors</string>
@@ -266,6 +267,7 @@
     <string name="aq_level_report">RMS = %1$.0f, target = %2$.0f\nTolerance = %3$.1f%%\nDuration = %4$.1fs</string>
     <string name="aq_spectrum_report_error">Cannot perform test.\nCheck volume is sufficiently high?</string>
     <string name="aq_spectrum_report_normal">RMS deviation = %1$.2f\nMax allowed deviation = %2$.1f</string>
+
     <string name="aq_cold_latency_report">Latency = %1$dms, maximum allowed = %2$dms</string>
     <string name="aq_warm_latency_report_error">RMS = %1$.0f, target = %2$.0f</string>
     <string name="aq_warm_latency_report_normal">Latency = %1$dms</string>
@@ -278,4 +280,8 @@
     <string name="aq_recording_error">Error reading data from AudioRecord instance</string>
     <string name="aq_exception_error">Exception thrown during test: %1$s</string>
 
+    <!-- Strings for Camera Analyzer -->
+    <string name="camera_analyzer">Camera Analyzer</string>
+    <string name="ca_run_label">Find color checker</string>
+    <string name="ca_result_label">Patch values will be here</string>
 </resources>
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/camera/analyzer/CameraAnalyzerActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/camera/analyzer/CameraAnalyzerActivity.java
new file mode 100644
index 0000000..b50dd9e
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/camera/analyzer/CameraAnalyzerActivity.java
@@ -0,0 +1,133 @@
+/*
+ * Copyright (C) 2011 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 com.android.cts.verifier.camera.analyzer;
+
+import com.android.cts.verifier.R;
+
+import android.app.Activity;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.ImageFormat;
+import android.hardware.Camera;
+import android.os.Bundle;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import java.io.IOException;
+
+public class CameraAnalyzerActivity extends Activity {
+
+    Bitmap mInputImage;
+    TextView mResultText;
+    SurfaceView mCameraView;
+    ImageView mResultView;
+    Camera mCamera;
+    boolean mProcessingPicture = false;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.ca_main);
+
+        findViewById(R.id.runbutton).setOnClickListener(mRunListener);
+
+        mCameraView = (SurfaceView)findViewById(R.id.cameraview);
+        mResultView = (ImageView)findViewById(R.id.resultview);
+        mResultText = (TextView)findViewById(R.id.resulttext);
+        mCameraView.getHolder().addCallback(mSurfaceChangeListener);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+        mCamera = Camera.open(0);
+        Camera.Parameters params = mCamera.getParameters();
+        params.setPictureFormat(ImageFormat.JPEG);
+        mCamera.setParameters(params);
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+        mCamera.release();
+    }
+
+    private View.OnClickListener mRunListener = new View.OnClickListener() {
+        @Override
+        public void onClick(View v) {
+            if (!mProcessingPicture) {
+                mCamera.takePicture(null, null, null, mJpegListener);
+                mProcessingPicture = true;
+            }
+        }
+    };
+
+    private Camera.PictureCallback mJpegListener = new Camera.PictureCallback() {
+        public void onPictureTaken(byte[] data, Camera mCamera) {
+            mCamera.startPreview();
+            mInputImage = BitmapFactory.decodeByteArray(data, 0, data.length);
+            ColorChecker checker = new ColorChecker(mInputImage);
+            mResultView.setImageBitmap(checker.getDebugOutput());
+            if (checker.isValid()) {
+                String patchValueTxt = new String();
+                for (int y = 0; y < 4; y++) {
+                    for (int x = 0; x < 6; x++) {
+                        patchValueTxt +=
+                                String.format("[ %.3f, %.3f, %.3f] ",
+                                              checker.getPatchValue(x,y,0),
+                                              checker.getPatchValue(x,y,1),
+                                              checker.getPatchValue(x,y,2));
+                    }
+                    patchValueTxt += "\n";
+                }
+                mResultText.setText(patchValueTxt);
+            } else {
+                mResultText.setText("Can't find color checker!");
+            }
+            mProcessingPicture = false;
+        }
+    };
+
+    private SurfaceHolder.Callback mSurfaceChangeListener =
+            new SurfaceHolder.Callback() {
+        @Override
+        public void surfaceChanged(SurfaceHolder holder,
+                                   int format,
+                                   int width,
+                                   int height) {
+
+        }
+
+        @Override
+        public void surfaceCreated(SurfaceHolder holder) {
+            try {
+                mCamera.setPreviewDisplay(mCameraView.getHolder());
+            } catch (IOException e) {
+                throw new RuntimeException("Unable to connect camera to display: " + e);
+            }
+            mCamera.startPreview();
+        }
+
+        @Override
+        public void surfaceDestroyed(SurfaceHolder holder) {
+
+        }
+
+    };
+}
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/camera/analyzer/ColorChecker.java b/apps/CtsVerifier/src/com/android/cts/verifier/camera/analyzer/ColorChecker.java
new file mode 100644
index 0000000..c9df24a
--- /dev/null
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/camera/analyzer/ColorChecker.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2011 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 com.android.cts.verifier.camera.analyzer;
+
+import android.graphics.Bitmap;
+
+/** The ColorChecker class is used to locate a Xrite Classic Color Checker grid
+ * pattern in an image, and return the average value of each color patch.
+ *
+ * The pattern is a 6x4 grid of square color patches. The detection routine
+ * assumes the pattern is placed roughly facing the camera, with the long size
+ * roughly horizontal. It doesn't matter whether the pattern is upside down or
+ * not - the returned array will have the grayscale squares of the pattern on
+ * the bottom row.
+ */
+class ColorChecker {
+
+    private float[] mPatchValues;
+    private Bitmap mDebugOutput;
+    private boolean mSuccess = false;
+
+    /** Construct a ColorChecker from a source Bitmap.
+     *
+     * @param source The source image to scan through for the 6x4 Xrite Classic
+     *        Color Checker pattern.
+     */
+    public ColorChecker(Bitmap source) {
+        mPatchValues = new float[6 * 4 * 3];
+        mSuccess =  findNative(source);
+     }
+
+    /** Returns whether the ColorChecker pattern was found in the source bitmap
+     *
+     * @return true if the pattern was found in the source Bitmap. false
+     *         otherwise.
+     */
+    public boolean isValid() {
+        return mSuccess;
+    }
+
+    /** Returns patch RGB triplet for patch (x, y), or null if the pattern wasn't
+     * found.
+     *
+     * @param x Column of the patch
+     * @param y Row of the patch
+     * @return A 3-entry float array representing the R, G, and B values of the
+     *         patch in roughly linear luminance, mapped to the 0-1 range.
+     */
+    public float[] getPatchRGB(int x, int y) {
+        if (!mSuccess) throw new RuntimeException("No color checker found!");
+        float[] rgb = {
+            mPatchValues[(y * 6 + x) * 3 + 0],
+            mPatchValues[(y * 6 + x) * 3 + 1],
+            mPatchValues[(y * 6 + x) * 3 + 2]
+        };
+        return rgb;
+    }
+
+    /** Returns patch (x, y) color channel c.
+     *
+     * @param x Column of the patch
+     * @param y Row of the patch
+     * @param c Color channel of the patch (0 = R, 1 = G, 2 = B)
+     * @return The float value for that color channel in roughly linear
+     *         luminance, mapped to the 0-1 range.
+     */
+    public float getPatchValue(int x, int y, int c) {
+        if (!mSuccess) throw new RuntimeException("No color checker found!");
+        return mPatchValues[(y * 6 + x) * 3 + c];
+    }
+
+    /** Returns debug Bitmap image showing detected candidate patches and the
+     * grid if it was found. Valid even if the pattern wasn't found. Candiate
+     * patches will have red bounding boxes. In addition, patches that are part
+     * of the color checker pattern are have a green diagonal, and all their
+     * member pixels are colored in solid blue.
+     *
+     * @return A low-resolution version of the source Bitmap with overlaid
+     *         detection results.
+     */
+    public Bitmap getDebugOutput() {
+        return mDebugOutput;
+    }
+
+    native boolean findNative(Bitmap input);
+
+    static {
+        System.loadLibrary("cameraanalyzer");
+    }
+}
\ No newline at end of file
diff --git a/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java b/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java
index 04f3456..a16fb2b 100644
--- a/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java
+++ b/apps/CtsVerifier/src/com/android/cts/verifier/features/FeatureSummaryActivity.java
@@ -213,7 +213,6 @@
         if (apiVersion >= Build.VERSION_CODES.ECLAIR_MR1) {
             Collections.addAll(features, ALL_ECLAIR_FEATURES);
         }
-
         for (Feature f : features) {
             HashMap<String, Object> row = new HashMap<String, Object>();
             listViewData.add(row);
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 85e10cd..616bcfa 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -34,6 +34,8 @@
     <uses-permission android:name="android.permission.SET_TIME_ZONE" />
     <uses-permission android:name="android.permission.WRITE_CONTACTS" />
     <uses-permission android:name="android.permission.READ_CONTACTS" />
+    <uses-permission android:name="android.permission.WRITE_CALENDAR" />
+    <uses-permission android:name="android.permission.READ_CALENDAR" />
     <uses-permission android:name="android.permission.DEVICE_POWER" />
     <uses-permission android:name="android.permission.STATUS_BAR" />
     <uses-permission android:name="android.permission.EXPAND_STATUS_BAR" />
@@ -945,6 +947,62 @@
         <activity android:name="android.app.cts.ActivityManagerMemoryClassTestActivity"
                 android:process=":memoryclass" />
 
+        <service android:name="android.speech.tts.cts.StubTextToSpeechService">
+            <intent-filter>
+                <action android:name="android.intent.action.TTS_SERVICE" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </service>
+
+        <activity android:name="android.theme.cts.ThemeTestRunnerActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+        </activity>
+        <activity android:name="android.theme.cts.ThemeTestGeneratorActivity"
+                  android:label="Theme Check">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+        </activity>
+        <activity android:name="android.theme.cts.ThemeSelectorActivity"
+                  android:theme="@android:style/Theme.Holo"
+                  android:label="Theme Check">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+        </activity>
+        <activity android:name="android.theme.cts.TestListActivity"
+                  android:label="Theme Check">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+        </activity>
+        <activity android:name="android.theme.cts.OrientationSelectorActivity"
+                  android:theme="@android:style/Theme.Holo"
+                  android:label="Theme Check">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.LAUNCHER"/>
+            </intent-filter>
+        </activity>
+        <activity android:name="android.theme.cts.SnapshotActivity">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+        </activity>
+        <activity android:name="android.theme.cts.SplitSnapshotActivity"
+                  android:uiOptions="splitActionBarWhenNarrow">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN"/>
+                <category android:name="android.intent.category.DEFAULT"/>
+            </intent-filter>
+        </activity>
     </application>
 
     <!--Test for PackageManager, please put this at the very beginning-->
diff --git a/tests/SignatureTest/Android.mk b/tests/SignatureTest/Android.mk
index 4166002..3ebab34 100644
--- a/tests/SignatureTest/Android.mk
+++ b/tests/SignatureTest/Android.mk
@@ -31,7 +31,7 @@
 # To be passed in on command line
 CTS_API_VERSION ?= current
 
-android_api_description := $(SRC_API_DIR)/$(CTS_API_VERSION).xml
+android_api_description := $(SRC_API_DIR)/$(CTS_API_VERSION).txt
 
 # Can't call local-intermediates-dir directly here because we have to
 # include BUILD_PACAKGE first.  Can't include BUILD_PACKAGE first
@@ -67,9 +67,15 @@
 # sure the generated resources rule depend on it, we can ensure that
 # the proper version of the api resource gets generated.
 $(api_ver_file):
-	@rm -f $(api_ver_path)/api_ver_is_*
+	$(hide) rm -f $(api_ver_path)/api_ver_is_*
 	$(hide) touch $@
 
+android_api_xml_description := $(intermediates.COMMON)/api.xml
+$(android_api_xml_description): PRIVATE_INPUT_FILE := $(android_api_description)
+$(android_api_xml_description): $(android_api_description) $(APICHECK)
+	$(hide) echo "Convert api file to xml: $@"
+	$(hide) $(APICHECK_COMMAND) -convert2xml $(PRIVATE_INPUT_FILE) $@
+
 static_res_deps := $(call find-subdir-assets,$(LOCAL_PATH)/res)
 $(copied_res_stamp): PRIVATE_PATH := $(LOCAL_PATH)
 $(copied_res_stamp): PRIVATE_MODULE := $(LOCAL_MODULE)
@@ -77,11 +83,11 @@
 $(copied_res_stamp): FAKE_RESOURCE_DIR := $(dir $(fake_resource_check))
 $(copied_res_stamp): FAKE_RESOURCE_CHECK := $(fake_resource_check)
 $(copied_res_stamp): $(foreach res,$(static_res_deps),$(LOCAL_PATH)/res/${res}) | $(ACP)
-	@echo "Copy resources: $(PRIVATE_MODULE)"
-	@rm -f $@
-	@rm -rf $(PRIVATE_RES_DIR)
-	@mkdir -p $(PRIVATE_RES_DIR)
-	@if [ ! -f $(FAKE_RESOURCE_CHECK) ]; \
+	$(hide) echo "Copy resources: $(PRIVATE_MODULE)"
+	$(hide) rm -f $@
+	$(hide) rm -rf $(PRIVATE_RES_DIR)
+	$(hide) mkdir -p $(PRIVATE_RES_DIR)
+	$(hide) if [ ! -f $(FAKE_RESOURCE_CHECK) ]; \
 	  then mkdir -p $(FAKE_RESOURCE_DIR); \
 	  touch $(FAKE_RESOURCE_CHECK); \
 	fi
@@ -94,11 +100,11 @@
 $(generated_res_stamp): PRIVATE_MODULE := $(LOCAL_MODULE)
 $(generated_res_stamp): PRIVATE_RES_DIR := $(signature_res_dir)
 $(generated_res_stamp): $(api_ver_file)
-$(generated_res_stamp): $(copied_res_stamp) $(android_api_description)
-	@echo "Copy generated resources: $(PRIVATE_MODULE)"
-	@rm -f $@
+$(generated_res_stamp): $(copied_res_stamp) $(android_api_xml_description)
+	$(hide) echo "Copy generated resources: $(PRIVATE_MODULE)"
+	$(hide) rm -f $@
 	$(hide) python cts/tools/utils/android_api_description_splitter.py \
-		$(android_api_description) $(PRIVATE_RES_DIR) package
+		$(android_api_xml_description) $(PRIVATE_RES_DIR) package
 	$(hide) touch $@
 
 $(R_file_stamp): $(generated_res_stamp) $(copied_res_stamp)
diff --git a/tests/assets/webkit/test_jsInterface.html b/tests/assets/webkit/test_jsInterface.html
index b7d7150..662dfe0 100644
--- a/tests/assets/webkit/test_jsInterface.html
+++ b/tests/assets/webkit/test_jsInterface.html
@@ -15,11 +15,7 @@
 
 <html>
     <title>Original title</title>
-    <script type="text/javascript">
-        /* This function is invoked by the activity */
-        function changeTitle(title) { document.title = title; }
-    </script>
     <!-- Calls into the javascript interface for the activity -->
-    <body onload='window.dummy.onLoad(document.title)'>
+    <body onload='window.dummy.provideResult(document.title)'>
     </body>
 </html>
diff --git a/tests/core/Android.mk b/tests/core/Android.mk
index 7a2a708..e9c9793 100644
--- a/tests/core/Android.mk
+++ b/tests/core/Android.mk
@@ -14,6 +14,4 @@
 
 LOCAL_PATH:= $(call my-dir)
 
-BUILD_CTSCORE_PACKAGE:=$(LOCAL_PATH)/ctscore.mk
-
 include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/core/ctscore.mk b/tests/core/ctscore.mk
index 337b3f5..11fc253 100644
--- a/tests/core/ctscore.mk
+++ b/tests/core/ctscore.mk
@@ -39,16 +39,14 @@
 $(PACKAGE_RESOURCES): PRIVATE_PRIVATE_KEY := $(private_key)
 $(PACKAGE_RESOURCES): PRIVATE_CERTIFICATE := $(certificate)
 $(PACKAGE_RESOURCES): $(LOCAL_BUILT_MODULE) $(CORETESTS_INTERMEDIATES)/javalib.jar
+# Remove .class files from javalib.jar, we only want the resources
 	@echo "Add resources to package ($@)"
 	@rm -rf $(PRIVATE_INTERMEDIATES_COMMON)/ctsclasses
-# javalib.jar should only contain .dex files, but the harmony tests also include
-# some .class files, so get rid of them
 	$(call unzip-jar-files,$(PRIVATE_CORETESTS_INTERMEDIATES_COMMON)/javalib.jar,\
 		$(PRIVATE_INTERMEDIATES_COMMON)/ctsclasses)
 	@find $(PRIVATE_INTERMEDIATES_COMMON)/ctsclasses -type f -name "*.class" -delete
-	@rm -f $(PRIVATE_INTERMEDIATES_COMMON)/ctsclasses/classes.dex
-	@cp $< $@
-	@jar uf $@ -C $(PRIVATE_INTERMEDIATES_COMMON)/ctsclasses .
+	$(hide) cp $< $@
+	$(hide) jar uf $@ -C $(PRIVATE_INTERMEDIATES_COMMON)/ctsclasses .
 	$(sign-package)
 	$(align-package)
 	$(hide) cp $@ $<
diff --git a/tests/core/dom/Android.mk b/tests/core/dom/Android.mk
deleted file mode 100644
index 69d4af3..0000000
--- a/tests/core/dom/Android.mk
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2009 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-ifeq ($(BUILD_CTSCORE_PACKAGE),)
-    $(error BUILD_CTSCORE_PACKAGE must be defined)
-endif
-
-#
-# DOM Tests
-##########################################################
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under,../../../../libcore/dom/src/test/java) \
-	$(call all-java-files-under,../../../../libcore/junit/src/test/java/junit) \
-	$(call all-java-files-under,../../../../libcore/support/src/test/java/)
-
-LOCAL_PACKAGE_NAME := android.core.tests.dom
-
-# for java.* javax.* support classes in libcore/support/src/test/java
-LOCAL_DX_FLAGS := --core-library
-
-include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/dom/AndroidManifest.xml b/tests/core/dom/AndroidManifest.xml
deleted file mode 100644
index 8fa00e3..0000000
--- a/tests/core/dom/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2007 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.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.core.tests.dom">
-    <uses-permission android:name="android.permission.INTERNET" />
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
-                     android:targetPackage="android.core.tests.runner"
-                     android:label="cts framework tests"/>
-
-</manifest>
diff --git a/tests/core/libcore/Android.mk b/tests/core/libcore/Android.mk
new file mode 100644
index 0000000..5a897eb8
--- /dev/null
+++ b/tests/core/libcore/Android.mk
@@ -0,0 +1,19 @@
+# Copyright (C) 2009 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+BUILD_CTSCORE_PACKAGE:=$(LOCAL_PATH)/../ctscore.mk
+
+include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/core/libcore/com/Android.mk b/tests/core/libcore/com/Android.mk
new file mode 100644
index 0000000..91a5da0
--- /dev/null
+++ b/tests/core/libcore/com/Android.mk
@@ -0,0 +1,25 @@
+# Copyright (C) 2009 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+ifeq ($(BUILD_CTSCORE_PACKAGE),)
+    $(error BUILD_CTSCORE_PACKAGE must be defined)
+endif
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := ../src/Dummy.java
+LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.com
+LOCAL_STATIC_JAVA_LIBRARIES := core-tests
+include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/libcore/com/AndroidManifest.xml b/tests/core/libcore/com/AndroidManifest.xml
new file mode 100644
index 0000000..4e37ef4
--- /dev/null
+++ b/tests/core/libcore/com/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2007 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.core.tests.libcore.package.com">
+    <uses-permission android:name="android.permission.INTERNET" />
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+                     android:targetPackage="android.core.tests.runner"
+                     android:label="cts framework tests"/>
+
+</manifest>
diff --git a/tests/core/libcore/dalvik/Android.mk b/tests/core/libcore/dalvik/Android.mk
new file mode 100644
index 0000000..45f6e7e
--- /dev/null
+++ b/tests/core/libcore/dalvik/Android.mk
@@ -0,0 +1,25 @@
+# Copyright (C) 2009 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+ifeq ($(BUILD_CTSCORE_PACKAGE),)
+    $(error BUILD_CTSCORE_PACKAGE must be defined)
+endif
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := ../src/Dummy.java
+LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.dalvik
+LOCAL_STATIC_JAVA_LIBRARIES := core-tests
+include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/libcore/dalvik/AndroidManifest.xml b/tests/core/libcore/dalvik/AndroidManifest.xml
new file mode 100644
index 0000000..6def32c
--- /dev/null
+++ b/tests/core/libcore/dalvik/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2007 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.core.tests.libcore.package.dalvik">
+    <uses-permission android:name="android.permission.INTERNET" />
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+                     android:targetPackage="android.core.tests.runner"
+                     android:label="cts framework tests"/>
+
+</manifest>
diff --git a/tests/core/libcore/libcore/Android.mk b/tests/core/libcore/libcore/Android.mk
new file mode 100644
index 0000000..97e32bc
--- /dev/null
+++ b/tests/core/libcore/libcore/Android.mk
@@ -0,0 +1,25 @@
+# Copyright (C) 2009 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+ifeq ($(BUILD_CTSCORE_PACKAGE),)
+    $(error BUILD_CTSCORE_PACKAGE must be defined)
+endif
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := ../src/Dummy.java
+LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.libcore
+LOCAL_STATIC_JAVA_LIBRARIES := core-tests
+include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/libcore/libcore/AndroidManifest.xml b/tests/core/libcore/libcore/AndroidManifest.xml
new file mode 100644
index 0000000..e4a5d1e
--- /dev/null
+++ b/tests/core/libcore/libcore/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2007 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.core.tests.libcore.package.libcore">
+    <uses-permission android:name="android.permission.INTERNET" />
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+                     android:targetPackage="android.core.tests.runner"
+                     android:label="cts framework tests"/>
+
+</manifest>
diff --git a/tests/core/libcore/org/Android.mk b/tests/core/libcore/org/Android.mk
new file mode 100644
index 0000000..8fad8de
--- /dev/null
+++ b/tests/core/libcore/org/Android.mk
@@ -0,0 +1,25 @@
+# Copyright (C) 2009 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+ifeq ($(BUILD_CTSCORE_PACKAGE),)
+    $(error BUILD_CTSCORE_PACKAGE must be defined)
+endif
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := ../src/Dummy.java
+LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.org
+LOCAL_STATIC_JAVA_LIBRARIES := core-tests
+include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/libcore/org/AndroidManifest.xml b/tests/core/libcore/org/AndroidManifest.xml
new file mode 100644
index 0000000..d5b77bd
--- /dev/null
+++ b/tests/core/libcore/org/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2007 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.core.tests.libcore.package.org">
+    <uses-permission android:name="android.permission.INTERNET" />
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+                     android:targetPackage="android.core.tests.runner"
+                     android:label="cts framework tests"/>
+
+</manifest>
diff --git a/tests/core/libcore/src/Dummy.java b/tests/core/libcore/src/Dummy.java
new file mode 100644
index 0000000..cfe0c81
--- /dev/null
+++ b/tests/core/libcore/src/Dummy.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2011 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.
+ */
+
+/**
+ * We really just want the core-tests classes from the static java
+ * library, but the build system currently needs at least one input
+ * file, not just becuase its a sanity check, but because the static
+ * class files and resources are included in the output of the local
+ * java compilation.
+ */
+public final class Dummy {}
diff --git a/tests/core/libcore/sun/Android.mk b/tests/core/libcore/sun/Android.mk
new file mode 100644
index 0000000..5fc0c48
--- /dev/null
+++ b/tests/core/libcore/sun/Android.mk
@@ -0,0 +1,25 @@
+# Copyright (C) 2009 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+ifeq ($(BUILD_CTSCORE_PACKAGE),)
+    $(error BUILD_CTSCORE_PACKAGE must be defined)
+endif
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := ../src/Dummy.java
+LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.sun
+LOCAL_STATIC_JAVA_LIBRARIES := core-tests
+include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/libcore/sun/AndroidManifest.xml b/tests/core/libcore/sun/AndroidManifest.xml
new file mode 100644
index 0000000..cc1a853
--- /dev/null
+++ b/tests/core/libcore/sun/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2007 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.core.tests.libcore.package.sun">
+    <uses-permission android:name="android.permission.INTERNET" />
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+                     android:targetPackage="android.core.tests.runner"
+                     android:label="cts framework tests"/>
+
+</manifest>
diff --git a/tests/core/libcore/tests/Android.mk b/tests/core/libcore/tests/Android.mk
new file mode 100644
index 0000000..bcb6628
--- /dev/null
+++ b/tests/core/libcore/tests/Android.mk
@@ -0,0 +1,25 @@
+# Copyright (C) 2009 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.
+
+LOCAL_PATH:= $(call my-dir)
+
+ifeq ($(BUILD_CTSCORE_PACKAGE),)
+    $(error BUILD_CTSCORE_PACKAGE must be defined)
+endif
+
+include $(CLEAR_VARS)
+LOCAL_SRC_FILES := ../src/Dummy.java
+LOCAL_PACKAGE_NAME := android.core.tests.libcore.package.tests
+LOCAL_STATIC_JAVA_LIBRARIES := core-tests
+include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/libcore/tests/AndroidManifest.xml b/tests/core/libcore/tests/AndroidManifest.xml
new file mode 100644
index 0000000..02f8b4a
--- /dev/null
+++ b/tests/core/libcore/tests/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2007 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.core.tests.libcore.package.tests">
+    <uses-permission android:name="android.permission.INTERNET" />
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+                     android:targetPackage="android.core.tests.runner"
+                     android:label="cts framework tests"/>
+
+</manifest>
diff --git a/tests/core/luni-io/Android.mk b/tests/core/luni-io/Android.mk
deleted file mode 100644
index 6669c6a..0000000
--- a/tests/core/luni-io/Android.mk
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2009 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-ifeq ($(BUILD_CTSCORE_PACKAGE),)
-    $(error BUILD_CTSCORE_PACKAGE must be defined)
-endif
-
-#
-# Luni-Io Tests
-##########################################################
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under,../../../../libcore/luni/src/test/java/tests/api/java/io) \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/libcore/java/io) \
-	$(call all-java-files-under,../../../../libcore/support/src/test/java/) \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/org/apache/harmony/luni/tests/pkg1) \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/org/apache/harmony/luni/tests/pkg2) \
-	../../../../libcore/luni/src/test/java/tests/luni/AllTestsIo.java
-
-LOCAL_PACKAGE_NAME := android.core.tests.luni.io
-
-# for java.* javax.* support classes in libcore/support/src/test/java
-LOCAL_DX_FLAGS := --core-library
-
-include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/luni-io/AndroidManifest.xml b/tests/core/luni-io/AndroidManifest.xml
deleted file mode 100644
index 1224aa5..0000000
--- a/tests/core/luni-io/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2007 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.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.core.tests.luni.io">
-    <uses-permission android:name="android.permission.INTERNET" />
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
-                     android:targetPackage="android.core.tests.runner"
-                     android:label="cts framework tests"/>
-
-</manifest>
diff --git a/tests/core/luni-lang/Android.mk b/tests/core/luni-lang/Android.mk
deleted file mode 100644
index c3528ec..0000000
--- a/tests/core/luni-lang/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2009 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-ifeq ($(BUILD_CTSCORE_PACKAGE),)
-    $(error BUILD_CTSCORE_PACKAGE must be defined)
-endif
-
-#
-# Luni-Lang Tests
-##########################################################
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/tests/api/java/lang) \
-	$(call all-java-files-under,../../../../libcore/support/src/test/java/) \
-	../../../../libcore/luni/src/test/java/tests/luni/AllTestsLang.java
-
-LOCAL_PACKAGE_NAME := android.core.tests.luni.lang
-
-# for java.* javax.* support classes in libcore/support/src/test/java
-LOCAL_DX_FLAGS := --core-library
-
-include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/luni-lang/AndroidManifest.xml b/tests/core/luni-lang/AndroidManifest.xml
deleted file mode 100644
index cb79f5f..0000000
--- a/tests/core/luni-lang/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2007 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.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.core.tests.luni.lang">
-    <uses-permission android:name="android.permission.INTERNET" />
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
-                     android:targetPackage="android.core.tests.runner"
-                     android:label="cts framework tests"/>
-
-</manifest>
diff --git a/tests/core/luni-net/Android.mk b/tests/core/luni-net/Android.mk
deleted file mode 100644
index 8a6508c..0000000
--- a/tests/core/luni-net/Android.mk
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2009 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-ifeq ($(BUILD_CTSCORE_PACKAGE),)
-    $(error BUILD_CTSCORE_PACKAGE must be defined)
-endif
-
-#
-# Luni-Net Tests
-##########################################################
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/libcore/java/net) \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/org/apache/harmony/luni/tests/internal/net/www/protocol/http) \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/org/apache/harmony/luni/tests/internal/net/www/protocol/https) \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/org/apache/harmony/luni/tests/java/net) \
-	$(call all-java-files-under,../../../../libcore/support/src/test/java/) \
-	../../../../libcore/luni/src/test/java/tests/luni/AllTestsNet.java
-
-LOCAL_PACKAGE_NAME := android.core.tests.luni.net
-
-# for java.* javax.* support classes in libcore/support/src/test/java
-LOCAL_DX_FLAGS := --core-library
-
-include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/luni-net/AndroidManifest.xml b/tests/core/luni-net/AndroidManifest.xml
deleted file mode 100644
index ca0d17a..0000000
--- a/tests/core/luni-net/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2007 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.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.core.tests.luni.net">
-    <uses-permission android:name="android.permission.INTERNET" />
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
-                     android:targetPackage="android.core.tests.runner"
-                     android:label="cts framework tests"/>
-
-</manifest>
diff --git a/tests/core/luni-util/Android.mk b/tests/core/luni-util/Android.mk
deleted file mode 100644
index 5468c17..0000000
--- a/tests/core/luni-util/Android.mk
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2009 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-ifeq ($(BUILD_CTSCORE_PACKAGE),)
-    $(error BUILD_CTSCORE_PACKAGE must be defined)
-endif
-
-#
-# Luni-Util Tests
-##########################################################
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under,../../../../libcore/luni/src/test/java/org/apache/harmony/luni/tests/java/util) \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/tests/api/java/util) \
-	$(call all-java-files-under,../../../../libcore/support/src/test/java/) \
-	../../../../libcore/luni/src/test/java/tests/luni/AllTestsUtil.java
-
-LOCAL_PACKAGE_NAME := android.core.tests.luni.util
-
-# for java.* javax.* support classes in libcore/support/src/test/java
-LOCAL_DX_FLAGS := --core-library
-
-include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/luni-util/AndroidManifest.xml b/tests/core/luni-util/AndroidManifest.xml
deleted file mode 100644
index 8b4daad..0000000
--- a/tests/core/luni-util/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2007 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.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.core.tests.luni.util">
-    <uses-permission android:name="android.permission.INTERNET" />
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
-                     android:targetPackage="android.core.tests.runner"
-                     android:label="cts framework tests"/>
-
-</manifest>
diff --git a/tests/core/runner/src/android/test/InstrumentationCtsTestRunner.java b/tests/core/runner/src/android/test/InstrumentationCtsTestRunner.java
index 5aa2c3b..cdba560 100644
--- a/tests/core/runner/src/android/test/InstrumentationCtsTestRunner.java
+++ b/tests/core/runner/src/android/test/InstrumentationCtsTestRunner.java
@@ -80,8 +80,6 @@
         System.setProperty("user.home", cacheDir.getAbsolutePath());
         System.setProperty("java.io.tmpdir", cacheDir.getAbsolutePath());
         System.setProperty("user.dir", cacheDir.getAbsolutePath());
-        System.setProperty("javax.net.ssl.trustStore",
-                "/etc/security/cacerts.bks");
 
         TimeZone.setDefault(TimeZone.getTimeZone("GMT"));
 
diff --git a/tests/core/xml/Android.mk b/tests/core/xml/Android.mk
deleted file mode 100644
index 0f643a0..0000000
--- a/tests/core/xml/Android.mk
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2009 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.
-
-LOCAL_PATH:= $(call my-dir)
-
-ifeq ($(BUILD_CTSCORE_PACKAGE),)
-    $(error BUILD_CTSCORE_PACKAGE must be defined)
-endif
-
-#
-# Xml Tests
-##########################################################
-include $(CLEAR_VARS)
-
-LOCAL_SRC_FILES := $(call all-java-files-under,../../../../libcore/xml/src/test/java) \
-	$(call all-java-files-under,../../../../libcore/dom/src/test) \
-	$(call all-java-files-under,../../../../libcore/junit/src/test/java/junit) \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/tests/api/javax/xml/parsers) \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/tests/api/org/xml/sax) \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/tests/api/org/xml/sax/support) \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/tests/org/w3c/dom) \
-	$(call all-java-files-under,../../../../libcore/luni/src/test/java/tests/xml) \
-	$(call all-java-files-under,../../../../libcore/support/src/test/java)
-
-LOCAL_PACKAGE_NAME := android.core.tests.xml
-
-# for java.* javax.* support classes in libcore/support/src/test/java
-LOCAL_DX_FLAGS := --core-library
-
-include $(BUILD_CTSCORE_PACKAGE)
diff --git a/tests/core/xml/AndroidManifest.xml b/tests/core/xml/AndroidManifest.xml
deleted file mode 100644
index 0f6085e..0000000
--- a/tests/core/xml/AndroidManifest.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- * Copyright (C) 2007 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.
- -->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
-    package="android.core.tests.xml">
-    <uses-permission android:name="android.permission.INTERNET" />
-    <application>
-        <uses-library android:name="android.test.runner" />
-    </application>
-
-    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
-                     android:targetPackage="android.core.tests.runner"
-                     android:label="cts framework tests"/>
-
-</manifest>
diff --git a/tests/expectations/knownfailures-3.0_r1.txt b/tests/expectations/knownfailures-3.0_r1.txt
index 3cb0815..fb797c2 100644
--- a/tests/expectations/knownfailures-3.0_r1.txt
+++ b/tests/expectations/knownfailures-3.0_r1.txt
@@ -1,13 +1,4 @@
 [
-/* Framework problems. */
-{
-  name: "android.admin.cts.DevicePolicyManagerTest",
-  bug: 4993068
-},
-{
-  name: "android.media.cts.MediaRecorderTest#testSetCamera",
-  bug: 4464677
-},
 {
   name: "android.telephony.cts.PhoneNumberFormattingTextWatcherTest#testPhoneNumberFormattingTextWatcher",
   bug: 3198578
@@ -21,7 +12,6 @@
   description: "Need investigation.",
   names: [
     "android.provider.cts.Contacts_PeopleTest#testAddToGroup",
-    "android.provider.cts.MediaStore_Audio_Playlists_MembersTest",
     "android.webkit.cts.WebViewTest#testRequestImageRef",
     "tests.api.java.util.CalendarTest#test_getInstance"
   ]
diff --git a/tests/jni/Android.mk b/tests/jni/Android.mk
index 3f38bce..39aafa1 100644
--- a/tests/jni/Android.mk
+++ b/tests/jni/Android.mk
@@ -21,9 +21,6 @@
 # Don't include this package in any configuration by default.
 LOCAL_MODULE_TAGS := optional
 
-# This isn't part of the system, so don't prelink it.
-LOCAL_PRELINK_MODULE := false
-
 LOCAL_SRC_FILES := \
 		CtsJniOnLoad.cpp \
 		android_os_cts_FileUtils.cpp \
@@ -33,12 +30,8 @@
 
 LOCAL_SHARED_LIBRARIES := libnativehelper liblog
 
-ifneq ($(TARGET_SIMULATOR),true)
 LOCAL_SRC_FILES += android_os_cts_CpuFeatures.cpp
 LOCAL_C_INCLUDES += ndk/sources/cpufeatures
 LOCAL_STATIC_LIBRARIES := cpufeatures
-else
-LOCAL_CFLAGS += -DCTS_TARGET_SIMULATOR
-endif
 
 include $(BUILD_SHARED_LIBRARY)
diff --git a/tests/jni/CtsJniOnLoad.cpp b/tests/jni/CtsJniOnLoad.cpp
index 51d61f9..d029b2d 100644
--- a/tests/jni/CtsJniOnLoad.cpp
+++ b/tests/jni/CtsJniOnLoad.cpp
@@ -18,9 +18,7 @@
 #include <stdio.h>
 #include "android_net_cts_NetlinkSocket.h"
 
-#ifndef CTS_TARGET_SIMULATOR
 extern int register_android_os_cts_CpuFeatures(JNIEnv*);
-#endif
 
 extern int register_android_os_cts_FileUtils(JNIEnv*);
 
@@ -31,11 +29,9 @@
         return JNI_ERR;
     }
 
-#ifndef CTS_TARGET_SIMULATOR
     if (register_android_os_cts_CpuFeatures(env)) {
         return JNI_ERR;
     }
-#endif
 
     if (register_android_os_cts_FileUtils(env)) {
       return JNI_ERR;
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar.png b/tests/res/drawable-hdpi/holo_land_actionbar.png
new file mode 100644
index 0000000..617f9bce
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_action_items.png b/tests/res/drawable-hdpi/holo_land_actionbar_action_items.png
new file mode 100644
index 0000000..3f7ee8c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_action_items.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_action_items_split.png b/tests/res/drawable-hdpi/holo_land_actionbar_action_items_split.png
new file mode 100644
index 0000000..3f7ee8c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_action_items_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_action_view.png b/tests/res/drawable-hdpi/holo_land_actionbar_action_view.png
new file mode 100644
index 0000000..1141977
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_action_view.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_action_view_split.png b/tests/res/drawable-hdpi/holo_land_actionbar_action_view_split.png
new file mode 100644
index 0000000..1141977
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_action_view_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_home_as_up.png b/tests/res/drawable-hdpi/holo_land_actionbar_home_as_up.png
new file mode 100644
index 0000000..38369f8
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_home_as_up.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_home_as_up_split.png b/tests/res/drawable-hdpi/holo_land_actionbar_home_as_up_split.png
new file mode 100644
index 0000000..38369f8
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_home_as_up_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_list.png b/tests/res/drawable-hdpi/holo_land_actionbar_list.png
new file mode 100644
index 0000000..3961b00
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_list.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_list_split.png b/tests/res/drawable-hdpi/holo_land_actionbar_list_split.png
new file mode 100644
index 0000000..3961b00
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_list_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_no_icon.png b/tests/res/drawable-hdpi/holo_land_actionbar_no_icon.png
new file mode 100644
index 0000000..8cd6f73
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_no_icon.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_no_icon_split.png b/tests/res/drawable-hdpi/holo_land_actionbar_no_icon_split.png
new file mode 100644
index 0000000..8cd6f73
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_no_icon_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_no_title.png b/tests/res/drawable-hdpi/holo_land_actionbar_no_title.png
new file mode 100644
index 0000000..3d0e0ea
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_no_title.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_no_title_split.png b/tests/res/drawable-hdpi/holo_land_actionbar_no_title_split.png
new file mode 100644
index 0000000..3d0e0ea
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_no_title_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_split.png b/tests/res/drawable-hdpi/holo_land_actionbar_split.png
new file mode 100644
index 0000000..617f9bce
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_tabs.png b/tests/res/drawable-hdpi/holo_land_actionbar_tabs.png
new file mode 100644
index 0000000..641bd01
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_tabs.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_actionbar_tabs_split.png b/tests/res/drawable-hdpi/holo_land_actionbar_tabs_split.png
new file mode 100644
index 0000000..641bd01
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_actionbar_tabs_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_alertdialog_list.png b/tests/res/drawable-hdpi/holo_land_alertdialog_list.png
new file mode 100644
index 0000000..d9872f7
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_alertdialog_list.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_alertdialog_multichoice.png b/tests/res/drawable-hdpi/holo_land_alertdialog_multichoice.png
new file mode 100644
index 0000000..4623c0a
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_alertdialog_multichoice.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_alertdialog_onebutton.png b/tests/res/drawable-hdpi/holo_land_alertdialog_onebutton.png
new file mode 100644
index 0000000..6e52a98
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_alertdialog_onebutton.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_alertdialog_singlechoice.png b/tests/res/drawable-hdpi/holo_land_alertdialog_singlechoice.png
new file mode 100644
index 0000000..a610945
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_alertdialog_singlechoice.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_alertdialog_threebuttons.png b/tests/res/drawable-hdpi/holo_land_alertdialog_threebuttons.png
new file mode 100644
index 0000000..2d4d34c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_alertdialog_threebuttons.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_alertdialog_twobuttons.png b/tests/res/drawable-hdpi/holo_land_alertdialog_twobuttons.png
new file mode 100644
index 0000000..1874e22
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_alertdialog_twobuttons.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_blue_bright.png b/tests/res/drawable-hdpi/holo_land_blue_bright.png
new file mode 100644
index 0000000..2b362a9
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_blue_bright.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_blue_dark.png b/tests/res/drawable-hdpi/holo_land_blue_dark.png
new file mode 100644
index 0000000..3c8e3b5
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_blue_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_blue_light.png b/tests/res/drawable-hdpi/holo_land_blue_light.png
new file mode 100644
index 0000000..c7e6589
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_blue_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_button.png b/tests/res/drawable-hdpi/holo_land_button.png
new file mode 100644
index 0000000..929630d
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_button.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_button_pressed.png b/tests/res/drawable-hdpi/holo_land_button_pressed.png
new file mode 100644
index 0000000..69793ba
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_button_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_calendarview.png b/tests/res/drawable-hdpi/holo_land_calendarview.png
new file mode 100644
index 0000000..689cd28
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_calendarview.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_checkbox.png b/tests/res/drawable-hdpi/holo_land_checkbox.png
new file mode 100644
index 0000000..12b94f1
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_checkbox.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_checkbox_checked.png b/tests/res/drawable-hdpi/holo_land_checkbox_checked.png
new file mode 100644
index 0000000..bdb86fd
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_checkbox_checked.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_edittext.png b/tests/res/drawable-hdpi/holo_land_edittext.png
new file mode 100644
index 0000000..9c72d9e
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_edittext.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_green_dark.png b/tests/res/drawable-hdpi/holo_land_green_dark.png
new file mode 100644
index 0000000..ca42e5d
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_green_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_green_light.png b/tests/res/drawable-hdpi/holo_land_green_light.png
new file mode 100644
index 0000000..5212b70
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_green_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_orange_dark.png b/tests/res/drawable-hdpi/holo_land_orange_dark.png
new file mode 100644
index 0000000..0f03396
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_orange_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_orange_light.png b/tests/res/drawable-hdpi/holo_land_orange_light.png
new file mode 100644
index 0000000..91c2153
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_orange_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_progressbar.png b/tests/res/drawable-hdpi/holo_land_progressbar.png
new file mode 100644
index 0000000..f5d1226
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_progressbar.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_progressbar_horizontal0.png b/tests/res/drawable-hdpi/holo_land_progressbar_horizontal0.png
new file mode 100644
index 0000000..043a6ce
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_progressbar_horizontal0.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_progressbar_horizontal100.png b/tests/res/drawable-hdpi/holo_land_progressbar_horizontal100.png
new file mode 100644
index 0000000..b733fdb
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_progressbar_horizontal100.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_progressbar_horizontal50.png b/tests/res/drawable-hdpi/holo_land_progressbar_horizontal50.png
new file mode 100644
index 0000000..8caa7c2
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_progressbar_horizontal50.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_progressbar_large.png b/tests/res/drawable-hdpi/holo_land_progressbar_large.png
new file mode 100644
index 0000000..82bfaab
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_progressbar_large.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_progressbar_small.png b/tests/res/drawable-hdpi/holo_land_progressbar_small.png
new file mode 100644
index 0000000..d2a3672
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_progressbar_small.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_progressdialog_horizontal.png b/tests/res/drawable-hdpi/holo_land_progressdialog_horizontal.png
new file mode 100644
index 0000000..9c6e7ca
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_progressdialog_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_progressdialog_spinner.png b/tests/res/drawable-hdpi/holo_land_progressdialog_spinner.png
new file mode 100644
index 0000000..d0d842f
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_progressdialog_spinner.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_purple.png b/tests/res/drawable-hdpi/holo_land_purple.png
new file mode 100644
index 0000000..6f0b611
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_purple.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_radiobutton.png b/tests/res/drawable-hdpi/holo_land_radiobutton.png
new file mode 100644
index 0000000..277a74c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_radiobutton.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_radiobutton_checked.png b/tests/res/drawable-hdpi/holo_land_radiobutton_checked.png
new file mode 100644
index 0000000..4b27a6b
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_radiobutton_checked.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_radiogroup_horizontal.png b/tests/res/drawable-hdpi/holo_land_radiogroup_horizontal.png
new file mode 100644
index 0000000..82b726e
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_radiogroup_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_radiogroup_vertical.png b/tests/res/drawable-hdpi/holo_land_radiogroup_vertical.png
new file mode 100644
index 0000000..6bb138c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_radiogroup_vertical.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_ratingbar_0.png b/tests/res/drawable-hdpi/holo_land_ratingbar_0.png
new file mode 100644
index 0000000..3ab433c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_ratingbar_0.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_ratingbar_0_pressed.png b/tests/res/drawable-hdpi/holo_land_ratingbar_0_pressed.png
new file mode 100644
index 0000000..4dc4b05
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_ratingbar_0_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_ratingbar_2point5.png b/tests/res/drawable-hdpi/holo_land_ratingbar_2point5.png
new file mode 100644
index 0000000..2ca1852
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_ratingbar_2point5.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_ratingbar_2point5_pressed.png b/tests/res/drawable-hdpi/holo_land_ratingbar_2point5_pressed.png
new file mode 100644
index 0000000..84d8b8c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_ratingbar_2point5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_ratingbar_5.png b/tests/res/drawable-hdpi/holo_land_ratingbar_5.png
new file mode 100644
index 0000000..87c629e
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_ratingbar_5.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_ratingbar_5_pressed.png b/tests/res/drawable-hdpi/holo_land_ratingbar_5_pressed.png
new file mode 100644
index 0000000..1122d5e
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_ratingbar_5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_red_dark.png b/tests/res/drawable-hdpi/holo_land_red_dark.png
new file mode 100644
index 0000000..c5925a5
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_red_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_red_light.png b/tests/res/drawable-hdpi/holo_land_red_light.png
new file mode 100644
index 0000000..4552be9
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_red_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_searchview.png b/tests/res/drawable-hdpi/holo_land_searchview.png
new file mode 100644
index 0000000..504ff3a
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_searchview.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_searchview_query.png b/tests/res/drawable-hdpi/holo_land_searchview_query.png
new file mode 100644
index 0000000..79c3ba8
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_searchview_query.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_searchview_queryhint.png b/tests/res/drawable-hdpi/holo_land_searchview_queryhint.png
new file mode 100644
index 0000000..2650b44
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_searchview_queryhint.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_seekbar_0.png b/tests/res/drawable-hdpi/holo_land_seekbar_0.png
new file mode 100644
index 0000000..94a55b8
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_seekbar_0.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_seekbar_100.png b/tests/res/drawable-hdpi/holo_land_seekbar_100.png
new file mode 100644
index 0000000..3564320
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_seekbar_100.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_seekbar_50.png b/tests/res/drawable-hdpi/holo_land_seekbar_50.png
new file mode 100644
index 0000000..dca7f37
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_seekbar_50.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_spinner.png b/tests/res/drawable-hdpi/holo_land_spinner.png
new file mode 100644
index 0000000..34c323c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_spinner.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_tabhost.png b/tests/res/drawable-hdpi/holo_land_tabhost.png
new file mode 100644
index 0000000..a7140a5
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_tabhost.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_textview.png b/tests/res/drawable-hdpi/holo_land_textview.png
new file mode 100644
index 0000000..8d26809
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_textview.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_toggle_button.png b/tests/res/drawable-hdpi/holo_land_toggle_button.png
new file mode 100644
index 0000000..3f36871
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_toggle_button.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_toggle_button_checked.png b/tests/res/drawable-hdpi/holo_land_toggle_button_checked.png
new file mode 100644
index 0000000..f55486a
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_toggle_button_checked.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_land_zoomcontrols.png b/tests/res/drawable-hdpi/holo_land_zoomcontrols.png
new file mode 100644
index 0000000..5763406
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_land_zoomcontrols.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar.png b/tests/res/drawable-hdpi/holo_light_land_actionbar.png
new file mode 100644
index 0000000..aea3de7
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_action_items.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_action_items.png
new file mode 100644
index 0000000..eb9173e
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_action_items.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_action_items_split.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_action_items_split.png
new file mode 100644
index 0000000..eb9173e
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_action_items_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_action_view.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_action_view.png
new file mode 100644
index 0000000..b34252d
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_action_view.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_action_view_split.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_action_view_split.png
new file mode 100644
index 0000000..b34252d
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_action_view_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_home_as_up.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_home_as_up.png
new file mode 100644
index 0000000..a61e861
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_home_as_up.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_home_as_up_split.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_home_as_up_split.png
new file mode 100644
index 0000000..a61e861
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_home_as_up_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_list.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_list.png
new file mode 100644
index 0000000..ab7e774
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_list.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_list_split.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_list_split.png
new file mode 100644
index 0000000..ab7e774
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_list_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_no_icon.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_no_icon.png
new file mode 100644
index 0000000..ef4ab6b
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_no_icon.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_no_icon_split.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_no_icon_split.png
new file mode 100644
index 0000000..ef4ab6b
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_no_icon_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_no_title.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_no_title.png
new file mode 100644
index 0000000..42c8f04
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_no_title.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_no_title_split.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_no_title_split.png
new file mode 100644
index 0000000..42c8f04
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_no_title_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_split.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_split.png
new file mode 100644
index 0000000..aea3de7
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_tabs.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_tabs.png
new file mode 100644
index 0000000..c0c49b4
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_tabs.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_actionbar_tabs_split.png b/tests/res/drawable-hdpi/holo_light_land_actionbar_tabs_split.png
new file mode 100644
index 0000000..c0c49b4
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_actionbar_tabs_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_alertdialog_list.png b/tests/res/drawable-hdpi/holo_light_land_alertdialog_list.png
new file mode 100644
index 0000000..2929cb3
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_alertdialog_list.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_alertdialog_multichoice.png b/tests/res/drawable-hdpi/holo_light_land_alertdialog_multichoice.png
new file mode 100644
index 0000000..494cb36
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_alertdialog_multichoice.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_alertdialog_onebutton.png b/tests/res/drawable-hdpi/holo_light_land_alertdialog_onebutton.png
new file mode 100644
index 0000000..02504c8
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_alertdialog_onebutton.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_alertdialog_singlechoice.png b/tests/res/drawable-hdpi/holo_light_land_alertdialog_singlechoice.png
new file mode 100644
index 0000000..793e907
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_alertdialog_singlechoice.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_alertdialog_threebuttons.png b/tests/res/drawable-hdpi/holo_light_land_alertdialog_threebuttons.png
new file mode 100644
index 0000000..954611b
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_alertdialog_threebuttons.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_alertdialog_twobuttons.png b/tests/res/drawable-hdpi/holo_light_land_alertdialog_twobuttons.png
new file mode 100644
index 0000000..26034a2
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_alertdialog_twobuttons.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_blue_bright.png b/tests/res/drawable-hdpi/holo_light_land_blue_bright.png
new file mode 100644
index 0000000..2b362a9
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_blue_bright.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_blue_dark.png b/tests/res/drawable-hdpi/holo_light_land_blue_dark.png
new file mode 100644
index 0000000..3c8e3b5
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_blue_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_blue_light.png b/tests/res/drawable-hdpi/holo_light_land_blue_light.png
new file mode 100644
index 0000000..c7e6589
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_blue_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_button.png b/tests/res/drawable-hdpi/holo_light_land_button.png
new file mode 100644
index 0000000..b65c7b5
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_button.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_button_pressed.png b/tests/res/drawable-hdpi/holo_light_land_button_pressed.png
new file mode 100644
index 0000000..e1c3088
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_button_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_calendarview.png b/tests/res/drawable-hdpi/holo_light_land_calendarview.png
new file mode 100644
index 0000000..a1a423f
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_calendarview.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_checkbox.png b/tests/res/drawable-hdpi/holo_light_land_checkbox.png
new file mode 100644
index 0000000..403f003
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_checkbox.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_checkbox_checked.png b/tests/res/drawable-hdpi/holo_light_land_checkbox_checked.png
new file mode 100644
index 0000000..4fddac2
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_checkbox_checked.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_edittext.png b/tests/res/drawable-hdpi/holo_light_land_edittext.png
new file mode 100644
index 0000000..3b79df1
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_edittext.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_green_dark.png b/tests/res/drawable-hdpi/holo_light_land_green_dark.png
new file mode 100644
index 0000000..ca42e5d
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_green_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_green_light.png b/tests/res/drawable-hdpi/holo_light_land_green_light.png
new file mode 100644
index 0000000..5212b70
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_green_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_orange_dark.png b/tests/res/drawable-hdpi/holo_light_land_orange_dark.png
new file mode 100644
index 0000000..0f03396
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_orange_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_orange_light.png b/tests/res/drawable-hdpi/holo_light_land_orange_light.png
new file mode 100644
index 0000000..91c2153
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_orange_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_progressbar.png b/tests/res/drawable-hdpi/holo_light_land_progressbar.png
new file mode 100644
index 0000000..f5d1226
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_progressbar.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_progressbar_horizontal0.png b/tests/res/drawable-hdpi/holo_light_land_progressbar_horizontal0.png
new file mode 100644
index 0000000..2dde5f3
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_progressbar_horizontal0.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_progressbar_horizontal100.png b/tests/res/drawable-hdpi/holo_light_land_progressbar_horizontal100.png
new file mode 100644
index 0000000..4202fce
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_progressbar_horizontal100.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_progressbar_horizontal50.png b/tests/res/drawable-hdpi/holo_light_land_progressbar_horizontal50.png
new file mode 100644
index 0000000..c0efc97
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_progressbar_horizontal50.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_progressbar_large.png b/tests/res/drawable-hdpi/holo_light_land_progressbar_large.png
new file mode 100644
index 0000000..82bfaab
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_progressbar_large.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_progressbar_small.png b/tests/res/drawable-hdpi/holo_light_land_progressbar_small.png
new file mode 100644
index 0000000..d2a3672
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_progressbar_small.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_progressdialog_horizontal.png b/tests/res/drawable-hdpi/holo_light_land_progressdialog_horizontal.png
new file mode 100644
index 0000000..d7ed0ce
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_progressdialog_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_progressdialog_spinner.png b/tests/res/drawable-hdpi/holo_light_land_progressdialog_spinner.png
new file mode 100644
index 0000000..f171ff1
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_progressdialog_spinner.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_purple.png b/tests/res/drawable-hdpi/holo_light_land_purple.png
new file mode 100644
index 0000000..6f0b611
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_purple.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_radiobutton.png b/tests/res/drawable-hdpi/holo_light_land_radiobutton.png
new file mode 100644
index 0000000..94b3ee7
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_radiobutton.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_radiobutton_checked.png b/tests/res/drawable-hdpi/holo_light_land_radiobutton_checked.png
new file mode 100644
index 0000000..d2d58a5
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_radiobutton_checked.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_radiogroup_horizontal.png b/tests/res/drawable-hdpi/holo_light_land_radiogroup_horizontal.png
new file mode 100644
index 0000000..d98797c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_radiogroup_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_radiogroup_vertical.png b/tests/res/drawable-hdpi/holo_light_land_radiogroup_vertical.png
new file mode 100644
index 0000000..3e84a9c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_radiogroup_vertical.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_ratingbar_0.png b/tests/res/drawable-hdpi/holo_light_land_ratingbar_0.png
new file mode 100644
index 0000000..b7ed0fd
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_ratingbar_0.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_ratingbar_0_pressed.png b/tests/res/drawable-hdpi/holo_light_land_ratingbar_0_pressed.png
new file mode 100644
index 0000000..eb69c2f
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_ratingbar_0_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_ratingbar_2point5.png b/tests/res/drawable-hdpi/holo_light_land_ratingbar_2point5.png
new file mode 100644
index 0000000..8a38f74
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_ratingbar_2point5.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_ratingbar_2point5_pressed.png b/tests/res/drawable-hdpi/holo_light_land_ratingbar_2point5_pressed.png
new file mode 100644
index 0000000..1ad6086
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_ratingbar_2point5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_ratingbar_5.png b/tests/res/drawable-hdpi/holo_light_land_ratingbar_5.png
new file mode 100644
index 0000000..1dd698f
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_ratingbar_5.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_ratingbar_5_pressed.png b/tests/res/drawable-hdpi/holo_light_land_ratingbar_5_pressed.png
new file mode 100644
index 0000000..1a64fe9
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_ratingbar_5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_red_dark.png b/tests/res/drawable-hdpi/holo_light_land_red_dark.png
new file mode 100644
index 0000000..c5925a5
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_red_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_red_light.png b/tests/res/drawable-hdpi/holo_light_land_red_light.png
new file mode 100644
index 0000000..4552be9
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_red_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_searchview.png b/tests/res/drawable-hdpi/holo_light_land_searchview.png
new file mode 100644
index 0000000..dfd917a
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_searchview.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_searchview_query.png b/tests/res/drawable-hdpi/holo_light_land_searchview_query.png
new file mode 100644
index 0000000..28e30d2
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_searchview_query.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_searchview_queryhint.png b/tests/res/drawable-hdpi/holo_light_land_searchview_queryhint.png
new file mode 100644
index 0000000..f37980e
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_searchview_queryhint.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_seekbar_0.png b/tests/res/drawable-hdpi/holo_light_land_seekbar_0.png
new file mode 100644
index 0000000..083c27c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_seekbar_0.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_seekbar_100.png b/tests/res/drawable-hdpi/holo_light_land_seekbar_100.png
new file mode 100644
index 0000000..3564320
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_seekbar_100.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_seekbar_50.png b/tests/res/drawable-hdpi/holo_light_land_seekbar_50.png
new file mode 100644
index 0000000..c0d10a4
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_seekbar_50.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_spinner.png b/tests/res/drawable-hdpi/holo_light_land_spinner.png
new file mode 100644
index 0000000..a50870d
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_spinner.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_tabhost.png b/tests/res/drawable-hdpi/holo_light_land_tabhost.png
new file mode 100644
index 0000000..a7140a5
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_tabhost.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_textview.png b/tests/res/drawable-hdpi/holo_light_land_textview.png
new file mode 100644
index 0000000..4cdbf1b
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_textview.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_toggle_button.png b/tests/res/drawable-hdpi/holo_light_land_toggle_button.png
new file mode 100644
index 0000000..e74a8f7
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_toggle_button.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_toggle_button_checked.png b/tests/res/drawable-hdpi/holo_light_land_toggle_button_checked.png
new file mode 100644
index 0000000..429de23
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_toggle_button_checked.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_land_zoomcontrols.png b/tests/res/drawable-hdpi/holo_light_land_zoomcontrols.png
new file mode 100644
index 0000000..5763406
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_land_zoomcontrols.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar.png b/tests/res/drawable-hdpi/holo_light_port_actionbar.png
new file mode 100644
index 0000000..6d3a0bd
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_action_items.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_action_items.png
new file mode 100644
index 0000000..43d3888
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_action_items.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_action_items_split.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_action_items_split.png
new file mode 100644
index 0000000..2032458
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_action_items_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_action_view.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_action_view.png
new file mode 100644
index 0000000..e246ba5
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_action_view.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_action_view_split.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_action_view_split.png
new file mode 100644
index 0000000..04f8407
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_action_view_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_home_as_up.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_home_as_up.png
new file mode 100644
index 0000000..e02a300
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_home_as_up.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_home_as_up_split.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_home_as_up_split.png
new file mode 100644
index 0000000..e02a300
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_home_as_up_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_list.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_list.png
new file mode 100644
index 0000000..614b6fa
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_list.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_list_split.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_list_split.png
new file mode 100644
index 0000000..614b6fa
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_list_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_no_icon.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_no_icon.png
new file mode 100644
index 0000000..93c94f8
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_no_icon.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_no_icon_split.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_no_icon_split.png
new file mode 100644
index 0000000..93c94f8
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_no_icon_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_no_title.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_no_title.png
new file mode 100644
index 0000000..2532002
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_no_title.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_no_title_split.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_no_title_split.png
new file mode 100644
index 0000000..2532002
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_no_title_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_split.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_split.png
new file mode 100644
index 0000000..6d3a0bd
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_tabs.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_tabs.png
new file mode 100644
index 0000000..6251b45
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_tabs.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_actionbar_tabs_split.png b/tests/res/drawable-hdpi/holo_light_port_actionbar_tabs_split.png
new file mode 100644
index 0000000..6251b45
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_actionbar_tabs_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_alertdialog_list.png b/tests/res/drawable-hdpi/holo_light_port_alertdialog_list.png
new file mode 100644
index 0000000..008da70
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_alertdialog_list.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_alertdialog_multichoice.png b/tests/res/drawable-hdpi/holo_light_port_alertdialog_multichoice.png
new file mode 100644
index 0000000..9da8a38
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_alertdialog_multichoice.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_alertdialog_onebutton.png b/tests/res/drawable-hdpi/holo_light_port_alertdialog_onebutton.png
new file mode 100644
index 0000000..b8f5e8a
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_alertdialog_onebutton.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_alertdialog_singlechoice.png b/tests/res/drawable-hdpi/holo_light_port_alertdialog_singlechoice.png
new file mode 100644
index 0000000..676dd35
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_alertdialog_singlechoice.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_alertdialog_threebuttons.png b/tests/res/drawable-hdpi/holo_light_port_alertdialog_threebuttons.png
new file mode 100644
index 0000000..a05d2eb
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_alertdialog_threebuttons.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_alertdialog_twobuttons.png b/tests/res/drawable-hdpi/holo_light_port_alertdialog_twobuttons.png
new file mode 100644
index 0000000..b2bcc69
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_alertdialog_twobuttons.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_blue_bright.png b/tests/res/drawable-hdpi/holo_light_port_blue_bright.png
new file mode 100644
index 0000000..98cac49
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_blue_bright.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_blue_dark.png b/tests/res/drawable-hdpi/holo_light_port_blue_dark.png
new file mode 100644
index 0000000..62c9e62
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_blue_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_blue_light.png b/tests/res/drawable-hdpi/holo_light_port_blue_light.png
new file mode 100644
index 0000000..e9cc213
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_blue_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_button.png b/tests/res/drawable-hdpi/holo_light_port_button.png
new file mode 100644
index 0000000..b65c7b5
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_button.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_button_pressed.png b/tests/res/drawable-hdpi/holo_light_port_button_pressed.png
new file mode 100644
index 0000000..e1c3088
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_button_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_calendarview.png b/tests/res/drawable-hdpi/holo_light_port_calendarview.png
new file mode 100644
index 0000000..4d1e5d5
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_calendarview.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_checkbox.png b/tests/res/drawable-hdpi/holo_light_port_checkbox.png
new file mode 100644
index 0000000..403f003
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_checkbox.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_checkbox_checked.png b/tests/res/drawable-hdpi/holo_light_port_checkbox_checked.png
new file mode 100644
index 0000000..4fddac2
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_checkbox_checked.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_edittext.png b/tests/res/drawable-hdpi/holo_light_port_edittext.png
new file mode 100644
index 0000000..28e0c47
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_edittext.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_green_dark.png b/tests/res/drawable-hdpi/holo_light_port_green_dark.png
new file mode 100644
index 0000000..e482e29
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_green_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_green_light.png b/tests/res/drawable-hdpi/holo_light_port_green_light.png
new file mode 100644
index 0000000..8711996
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_green_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_orange_dark.png b/tests/res/drawable-hdpi/holo_light_port_orange_dark.png
new file mode 100644
index 0000000..547b3bd
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_orange_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_orange_light.png b/tests/res/drawable-hdpi/holo_light_port_orange_light.png
new file mode 100644
index 0000000..468947c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_orange_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_progressbar.png b/tests/res/drawable-hdpi/holo_light_port_progressbar.png
new file mode 100644
index 0000000..f5d1226
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_progressbar.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_progressbar_horizontal0.png b/tests/res/drawable-hdpi/holo_light_port_progressbar_horizontal0.png
new file mode 100644
index 0000000..6fb4cde
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_progressbar_horizontal0.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_progressbar_horizontal100.png b/tests/res/drawable-hdpi/holo_light_port_progressbar_horizontal100.png
new file mode 100644
index 0000000..3b2d1ea
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_progressbar_horizontal100.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_progressbar_horizontal50.png b/tests/res/drawable-hdpi/holo_light_port_progressbar_horizontal50.png
new file mode 100644
index 0000000..eeb8fdf
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_progressbar_horizontal50.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_progressbar_large.png b/tests/res/drawable-hdpi/holo_light_port_progressbar_large.png
new file mode 100644
index 0000000..82bfaab
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_progressbar_large.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_progressbar_small.png b/tests/res/drawable-hdpi/holo_light_port_progressbar_small.png
new file mode 100644
index 0000000..d2a3672
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_progressbar_small.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_progressdialog_horizontal.png b/tests/res/drawable-hdpi/holo_light_port_progressdialog_horizontal.png
new file mode 100644
index 0000000..faf6dde
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_progressdialog_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_progressdialog_spinner.png b/tests/res/drawable-hdpi/holo_light_port_progressdialog_spinner.png
new file mode 100644
index 0000000..fe1eff5
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_progressdialog_spinner.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_purple.png b/tests/res/drawable-hdpi/holo_light_port_purple.png
new file mode 100644
index 0000000..eaac999
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_purple.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_radiobutton.png b/tests/res/drawable-hdpi/holo_light_port_radiobutton.png
new file mode 100644
index 0000000..94b3ee7
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_radiobutton.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_radiobutton_checked.png b/tests/res/drawable-hdpi/holo_light_port_radiobutton_checked.png
new file mode 100644
index 0000000..d2d58a5
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_radiobutton_checked.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_radiogroup_horizontal.png b/tests/res/drawable-hdpi/holo_light_port_radiogroup_horizontal.png
new file mode 100644
index 0000000..d98797c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_radiogroup_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_radiogroup_vertical.png b/tests/res/drawable-hdpi/holo_light_port_radiogroup_vertical.png
new file mode 100644
index 0000000..3e84a9c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_radiogroup_vertical.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_ratingbar_0.png b/tests/res/drawable-hdpi/holo_light_port_ratingbar_0.png
new file mode 100644
index 0000000..b7ed0fd
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_ratingbar_0.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_ratingbar_0_pressed.png b/tests/res/drawable-hdpi/holo_light_port_ratingbar_0_pressed.png
new file mode 100644
index 0000000..eb69c2f
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_ratingbar_0_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_ratingbar_2point5.png b/tests/res/drawable-hdpi/holo_light_port_ratingbar_2point5.png
new file mode 100644
index 0000000..8a38f74
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_ratingbar_2point5.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_ratingbar_2point5_pressed.png b/tests/res/drawable-hdpi/holo_light_port_ratingbar_2point5_pressed.png
new file mode 100644
index 0000000..1ad6086
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_ratingbar_2point5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_ratingbar_5.png b/tests/res/drawable-hdpi/holo_light_port_ratingbar_5.png
new file mode 100644
index 0000000..1dd698f
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_ratingbar_5.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_ratingbar_5_pressed.png b/tests/res/drawable-hdpi/holo_light_port_ratingbar_5_pressed.png
new file mode 100644
index 0000000..1a64fe9
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_ratingbar_5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_red_dark.png b/tests/res/drawable-hdpi/holo_light_port_red_dark.png
new file mode 100644
index 0000000..cdfaf7a
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_red_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_red_light.png b/tests/res/drawable-hdpi/holo_light_port_red_light.png
new file mode 100644
index 0000000..9bd867c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_red_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_searchview.png b/tests/res/drawable-hdpi/holo_light_port_searchview.png
new file mode 100644
index 0000000..10881ff
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_searchview.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_searchview_query.png b/tests/res/drawable-hdpi/holo_light_port_searchview_query.png
new file mode 100644
index 0000000..1d4950b
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_searchview_query.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_searchview_queryhint.png b/tests/res/drawable-hdpi/holo_light_port_searchview_queryhint.png
new file mode 100644
index 0000000..46d05a2
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_searchview_queryhint.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_seekbar_0.png b/tests/res/drawable-hdpi/holo_light_port_seekbar_0.png
new file mode 100644
index 0000000..0141a89
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_seekbar_0.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_seekbar_100.png b/tests/res/drawable-hdpi/holo_light_port_seekbar_100.png
new file mode 100644
index 0000000..6410b44
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_seekbar_100.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_seekbar_50.png b/tests/res/drawable-hdpi/holo_light_port_seekbar_50.png
new file mode 100644
index 0000000..304efdb
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_seekbar_50.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_spinner.png b/tests/res/drawable-hdpi/holo_light_port_spinner.png
new file mode 100644
index 0000000..81629b8
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_spinner.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_tabhost.png b/tests/res/drawable-hdpi/holo_light_port_tabhost.png
new file mode 100644
index 0000000..9e34d46
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_tabhost.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_textview.png b/tests/res/drawable-hdpi/holo_light_port_textview.png
new file mode 100644
index 0000000..48ee68d
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_textview.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_toggle_button.png b/tests/res/drawable-hdpi/holo_light_port_toggle_button.png
new file mode 100644
index 0000000..e74a8f7
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_toggle_button.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_toggle_button_checked.png b/tests/res/drawable-hdpi/holo_light_port_toggle_button_checked.png
new file mode 100644
index 0000000..429de23
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_toggle_button_checked.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_light_port_zoomcontrols.png b/tests/res/drawable-hdpi/holo_light_port_zoomcontrols.png
new file mode 100644
index 0000000..5763406
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_light_port_zoomcontrols.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar.png b/tests/res/drawable-hdpi/holo_port_actionbar.png
new file mode 100644
index 0000000..90e54bd
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_action_items.png b/tests/res/drawable-hdpi/holo_port_actionbar_action_items.png
new file mode 100644
index 0000000..58abebf
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_action_items.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_action_items_split.png b/tests/res/drawable-hdpi/holo_port_actionbar_action_items_split.png
new file mode 100644
index 0000000..8049154
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_action_items_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_action_view.png b/tests/res/drawable-hdpi/holo_port_actionbar_action_view.png
new file mode 100644
index 0000000..6c4e482
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_action_view.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_action_view_split.png b/tests/res/drawable-hdpi/holo_port_actionbar_action_view_split.png
new file mode 100644
index 0000000..aff9241
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_action_view_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_home_as_up.png b/tests/res/drawable-hdpi/holo_port_actionbar_home_as_up.png
new file mode 100644
index 0000000..39857b8
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_home_as_up.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_home_as_up_split.png b/tests/res/drawable-hdpi/holo_port_actionbar_home_as_up_split.png
new file mode 100644
index 0000000..39857b8
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_home_as_up_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_list.png b/tests/res/drawable-hdpi/holo_port_actionbar_list.png
new file mode 100644
index 0000000..341109f
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_list.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_list_split.png b/tests/res/drawable-hdpi/holo_port_actionbar_list_split.png
new file mode 100644
index 0000000..341109f
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_list_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_no_icon.png b/tests/res/drawable-hdpi/holo_port_actionbar_no_icon.png
new file mode 100644
index 0000000..ae9b08c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_no_icon.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_no_icon_split.png b/tests/res/drawable-hdpi/holo_port_actionbar_no_icon_split.png
new file mode 100644
index 0000000..ae9b08c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_no_icon_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_no_title.png b/tests/res/drawable-hdpi/holo_port_actionbar_no_title.png
new file mode 100644
index 0000000..4fbdc43
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_no_title.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_no_title_split.png b/tests/res/drawable-hdpi/holo_port_actionbar_no_title_split.png
new file mode 100644
index 0000000..4fbdc43
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_no_title_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_split.png b/tests/res/drawable-hdpi/holo_port_actionbar_split.png
new file mode 100644
index 0000000..90e54bd
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_tabs.png b/tests/res/drawable-hdpi/holo_port_actionbar_tabs.png
new file mode 100644
index 0000000..7923a71
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_tabs.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_actionbar_tabs_split.png b/tests/res/drawable-hdpi/holo_port_actionbar_tabs_split.png
new file mode 100644
index 0000000..7923a71
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_actionbar_tabs_split.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_alertdialog_list.png b/tests/res/drawable-hdpi/holo_port_alertdialog_list.png
new file mode 100644
index 0000000..d7242fe
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_alertdialog_list.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_alertdialog_multichoice.png b/tests/res/drawable-hdpi/holo_port_alertdialog_multichoice.png
new file mode 100644
index 0000000..b3096f8
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_alertdialog_multichoice.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_alertdialog_onebutton.png b/tests/res/drawable-hdpi/holo_port_alertdialog_onebutton.png
new file mode 100644
index 0000000..2338644
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_alertdialog_onebutton.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_alertdialog_singlechoice.png b/tests/res/drawable-hdpi/holo_port_alertdialog_singlechoice.png
new file mode 100644
index 0000000..52d24d0
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_alertdialog_singlechoice.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_alertdialog_threebuttons.png b/tests/res/drawable-hdpi/holo_port_alertdialog_threebuttons.png
new file mode 100644
index 0000000..1bb0a4e
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_alertdialog_threebuttons.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_alertdialog_twobuttons.png b/tests/res/drawable-hdpi/holo_port_alertdialog_twobuttons.png
new file mode 100644
index 0000000..4a6c5d7
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_alertdialog_twobuttons.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_blue_bright.png b/tests/res/drawable-hdpi/holo_port_blue_bright.png
new file mode 100644
index 0000000..98cac49
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_blue_bright.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_blue_dark.png b/tests/res/drawable-hdpi/holo_port_blue_dark.png
new file mode 100644
index 0000000..62c9e62
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_blue_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_blue_light.png b/tests/res/drawable-hdpi/holo_port_blue_light.png
new file mode 100644
index 0000000..e9cc213
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_blue_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_button.png b/tests/res/drawable-hdpi/holo_port_button.png
new file mode 100644
index 0000000..929630d
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_button.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_button_pressed.png b/tests/res/drawable-hdpi/holo_port_button_pressed.png
new file mode 100644
index 0000000..69793ba
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_button_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_calendarview.png b/tests/res/drawable-hdpi/holo_port_calendarview.png
new file mode 100644
index 0000000..45243d9
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_calendarview.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_checkbox.png b/tests/res/drawable-hdpi/holo_port_checkbox.png
new file mode 100644
index 0000000..12b94f1
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_checkbox.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_checkbox_checked.png b/tests/res/drawable-hdpi/holo_port_checkbox_checked.png
new file mode 100644
index 0000000..bdb86fd
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_checkbox_checked.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_edittext.png b/tests/res/drawable-hdpi/holo_port_edittext.png
new file mode 100644
index 0000000..fee4a77
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_edittext.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_green_dark.png b/tests/res/drawable-hdpi/holo_port_green_dark.png
new file mode 100644
index 0000000..e482e29
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_green_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_green_light.png b/tests/res/drawable-hdpi/holo_port_green_light.png
new file mode 100644
index 0000000..8711996
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_green_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_orange_dark.png b/tests/res/drawable-hdpi/holo_port_orange_dark.png
new file mode 100644
index 0000000..547b3bd
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_orange_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_orange_light.png b/tests/res/drawable-hdpi/holo_port_orange_light.png
new file mode 100644
index 0000000..468947c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_orange_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_progressbar.png b/tests/res/drawable-hdpi/holo_port_progressbar.png
new file mode 100644
index 0000000..f5d1226
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_progressbar.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_progressbar_horizontal0.png b/tests/res/drawable-hdpi/holo_port_progressbar_horizontal0.png
new file mode 100644
index 0000000..10f47bb
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_progressbar_horizontal0.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_progressbar_horizontal100.png b/tests/res/drawable-hdpi/holo_port_progressbar_horizontal100.png
new file mode 100644
index 0000000..687cc1d
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_progressbar_horizontal100.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_progressbar_horizontal50.png b/tests/res/drawable-hdpi/holo_port_progressbar_horizontal50.png
new file mode 100644
index 0000000..6d7d857
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_progressbar_horizontal50.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_progressbar_large.png b/tests/res/drawable-hdpi/holo_port_progressbar_large.png
new file mode 100644
index 0000000..82bfaab
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_progressbar_large.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_progressbar_small.png b/tests/res/drawable-hdpi/holo_port_progressbar_small.png
new file mode 100644
index 0000000..d2a3672
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_progressbar_small.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_progressdialog_horizontal.png b/tests/res/drawable-hdpi/holo_port_progressdialog_horizontal.png
new file mode 100644
index 0000000..cc06ee7
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_progressdialog_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_progressdialog_spinner.png b/tests/res/drawable-hdpi/holo_port_progressdialog_spinner.png
new file mode 100644
index 0000000..cff3930
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_progressdialog_spinner.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_purple.png b/tests/res/drawable-hdpi/holo_port_purple.png
new file mode 100644
index 0000000..eaac999
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_purple.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_radiobutton.png b/tests/res/drawable-hdpi/holo_port_radiobutton.png
new file mode 100644
index 0000000..277a74c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_radiobutton.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_radiobutton_checked.png b/tests/res/drawable-hdpi/holo_port_radiobutton_checked.png
new file mode 100644
index 0000000..4b27a6b
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_radiobutton_checked.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_radiogroup_horizontal.png b/tests/res/drawable-hdpi/holo_port_radiogroup_horizontal.png
new file mode 100644
index 0000000..82b726e
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_radiogroup_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_radiogroup_vertical.png b/tests/res/drawable-hdpi/holo_port_radiogroup_vertical.png
new file mode 100644
index 0000000..6bb138c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_radiogroup_vertical.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_ratingbar_0.png b/tests/res/drawable-hdpi/holo_port_ratingbar_0.png
new file mode 100644
index 0000000..3ab433c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_ratingbar_0.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_ratingbar_0_pressed.png b/tests/res/drawable-hdpi/holo_port_ratingbar_0_pressed.png
new file mode 100644
index 0000000..4dc4b05
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_ratingbar_0_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_ratingbar_2point5.png b/tests/res/drawable-hdpi/holo_port_ratingbar_2point5.png
new file mode 100644
index 0000000..2ca1852
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_ratingbar_2point5.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_ratingbar_2point5_pressed.png b/tests/res/drawable-hdpi/holo_port_ratingbar_2point5_pressed.png
new file mode 100644
index 0000000..84d8b8c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_ratingbar_2point5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_ratingbar_5.png b/tests/res/drawable-hdpi/holo_port_ratingbar_5.png
new file mode 100644
index 0000000..87c629e
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_ratingbar_5.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_ratingbar_5_pressed.png b/tests/res/drawable-hdpi/holo_port_ratingbar_5_pressed.png
new file mode 100644
index 0000000..1122d5e
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_ratingbar_5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_red_dark.png b/tests/res/drawable-hdpi/holo_port_red_dark.png
new file mode 100644
index 0000000..cdfaf7a
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_red_dark.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_red_light.png b/tests/res/drawable-hdpi/holo_port_red_light.png
new file mode 100644
index 0000000..9bd867c
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_red_light.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_searchview.png b/tests/res/drawable-hdpi/holo_port_searchview.png
new file mode 100644
index 0000000..95351cb
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_searchview.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_searchview_query.png b/tests/res/drawable-hdpi/holo_port_searchview_query.png
new file mode 100644
index 0000000..e83dc10
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_searchview_query.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_searchview_queryhint.png b/tests/res/drawable-hdpi/holo_port_searchview_queryhint.png
new file mode 100644
index 0000000..bdffa8b
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_searchview_queryhint.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_seekbar_0.png b/tests/res/drawable-hdpi/holo_port_seekbar_0.png
new file mode 100644
index 0000000..61f09a3
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_seekbar_0.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_seekbar_100.png b/tests/res/drawable-hdpi/holo_port_seekbar_100.png
new file mode 100644
index 0000000..6410b44
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_seekbar_100.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_seekbar_50.png b/tests/res/drawable-hdpi/holo_port_seekbar_50.png
new file mode 100644
index 0000000..a9d5988
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_seekbar_50.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_spinner.png b/tests/res/drawable-hdpi/holo_port_spinner.png
new file mode 100644
index 0000000..6c04244
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_spinner.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_tabhost.png b/tests/res/drawable-hdpi/holo_port_tabhost.png
new file mode 100644
index 0000000..9e34d46
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_tabhost.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_textview.png b/tests/res/drawable-hdpi/holo_port_textview.png
new file mode 100644
index 0000000..ac0aa44
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_textview.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_toggle_button.png b/tests/res/drawable-hdpi/holo_port_toggle_button.png
new file mode 100644
index 0000000..3f36871
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_toggle_button.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_toggle_button_checked.png b/tests/res/drawable-hdpi/holo_port_toggle_button_checked.png
new file mode 100644
index 0000000..f55486a
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_toggle_button_checked.png
Binary files differ
diff --git a/tests/res/drawable-hdpi/holo_port_zoomcontrols.png b/tests/res/drawable-hdpi/holo_port_zoomcontrols.png
new file mode 100644
index 0000000..5763406
--- /dev/null
+++ b/tests/res/drawable-hdpi/holo_port_zoomcontrols.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_actionbar.png b/tests/res/drawable-large-mdpi/holo_land_actionbar.png
new file mode 100644
index 0000000..51b2929
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_actionbar.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_actionbar_action_items.png b/tests/res/drawable-large-mdpi/holo_land_actionbar_action_items.png
new file mode 100644
index 0000000..b0fa76a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_actionbar_action_items.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_actionbar_action_view.png b/tests/res/drawable-large-mdpi/holo_land_actionbar_action_view.png
new file mode 100644
index 0000000..10daf41
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_actionbar_action_view.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_actionbar_home_as_up.png b/tests/res/drawable-large-mdpi/holo_land_actionbar_home_as_up.png
new file mode 100644
index 0000000..a8c8ae5
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_actionbar_home_as_up.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_actionbar_list.png b/tests/res/drawable-large-mdpi/holo_land_actionbar_list.png
new file mode 100644
index 0000000..83483bc
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_actionbar_list.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_actionbar_no_icon.png b/tests/res/drawable-large-mdpi/holo_land_actionbar_no_icon.png
new file mode 100644
index 0000000..9dbb4e3
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_actionbar_no_icon.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_actionbar_no_title.png b/tests/res/drawable-large-mdpi/holo_land_actionbar_no_title.png
new file mode 100644
index 0000000..45eed99
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_actionbar_no_title.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_actionbar_tabs.png b/tests/res/drawable-large-mdpi/holo_land_actionbar_tabs.png
new file mode 100644
index 0000000..ab6be33
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_actionbar_tabs.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_alertdialog_list.png b/tests/res/drawable-large-mdpi/holo_land_alertdialog_list.png
new file mode 100644
index 0000000..091f5c6
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_alertdialog_list.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_alertdialog_multichoice.png b/tests/res/drawable-large-mdpi/holo_land_alertdialog_multichoice.png
new file mode 100644
index 0000000..fa2616e
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_alertdialog_multichoice.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_alertdialog_onebutton.png b/tests/res/drawable-large-mdpi/holo_land_alertdialog_onebutton.png
new file mode 100644
index 0000000..43d40eb
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_alertdialog_onebutton.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_alertdialog_singlechoice.png b/tests/res/drawable-large-mdpi/holo_land_alertdialog_singlechoice.png
new file mode 100644
index 0000000..5682bc8
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_alertdialog_singlechoice.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_alertdialog_threebuttons.png b/tests/res/drawable-large-mdpi/holo_land_alertdialog_threebuttons.png
new file mode 100644
index 0000000..78b7029
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_alertdialog_threebuttons.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_alertdialog_twobuttons.png b/tests/res/drawable-large-mdpi/holo_land_alertdialog_twobuttons.png
new file mode 100644
index 0000000..3fbcc9c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_alertdialog_twobuttons.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_blue_bright.png b/tests/res/drawable-large-mdpi/holo_land_blue_bright.png
new file mode 100644
index 0000000..2c9b47a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_blue_bright.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_blue_dark.png b/tests/res/drawable-large-mdpi/holo_land_blue_dark.png
new file mode 100644
index 0000000..2f9446c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_blue_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_blue_light.png b/tests/res/drawable-large-mdpi/holo_land_blue_light.png
new file mode 100644
index 0000000..ce14078
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_blue_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_button.png b/tests/res/drawable-large-mdpi/holo_land_button.png
new file mode 100644
index 0000000..25cfc2d
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_button.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_button_pressed.png b/tests/res/drawable-large-mdpi/holo_land_button_pressed.png
new file mode 100644
index 0000000..6b1e5d2
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_button_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_calendarview.png b/tests/res/drawable-large-mdpi/holo_land_calendarview.png
new file mode 100644
index 0000000..4d57001
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_calendarview.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_checkbox.png b/tests/res/drawable-large-mdpi/holo_land_checkbox.png
new file mode 100644
index 0000000..1c8f6ed
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_checkbox.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_checkbox_checked.png b/tests/res/drawable-large-mdpi/holo_land_checkbox_checked.png
new file mode 100644
index 0000000..2df82f3
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_checkbox_checked.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_edittext.png b/tests/res/drawable-large-mdpi/holo_land_edittext.png
new file mode 100644
index 0000000..c21bb8e
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_edittext.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_green_dark.png b/tests/res/drawable-large-mdpi/holo_land_green_dark.png
new file mode 100644
index 0000000..f9ae8c4
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_green_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_green_light.png b/tests/res/drawable-large-mdpi/holo_land_green_light.png
new file mode 100644
index 0000000..ec19ed9
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_green_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_orange_dark.png b/tests/res/drawable-large-mdpi/holo_land_orange_dark.png
new file mode 100644
index 0000000..33f5bae
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_orange_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_orange_light.png b/tests/res/drawable-large-mdpi/holo_land_orange_light.png
new file mode 100644
index 0000000..d4184b7
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_orange_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_progressbar.png b/tests/res/drawable-large-mdpi/holo_land_progressbar.png
new file mode 100644
index 0000000..e4dd24d
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_progressbar.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_progressbar_horizontal0.png b/tests/res/drawable-large-mdpi/holo_land_progressbar_horizontal0.png
new file mode 100644
index 0000000..37674f5
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_progressbar_horizontal0.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_progressbar_horizontal100.png b/tests/res/drawable-large-mdpi/holo_land_progressbar_horizontal100.png
new file mode 100644
index 0000000..3d90314
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_progressbar_horizontal100.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_progressbar_horizontal50.png b/tests/res/drawable-large-mdpi/holo_land_progressbar_horizontal50.png
new file mode 100644
index 0000000..42d3bf1
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_progressbar_horizontal50.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_progressbar_large.png b/tests/res/drawable-large-mdpi/holo_land_progressbar_large.png
new file mode 100644
index 0000000..a266699
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_progressbar_large.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_progressbar_small.png b/tests/res/drawable-large-mdpi/holo_land_progressbar_small.png
new file mode 100644
index 0000000..495c73a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_progressbar_small.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_progressdialog_horizontal.png b/tests/res/drawable-large-mdpi/holo_land_progressdialog_horizontal.png
new file mode 100644
index 0000000..d6d581a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_progressdialog_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_progressdialog_spinner.png b/tests/res/drawable-large-mdpi/holo_land_progressdialog_spinner.png
new file mode 100644
index 0000000..2760cac
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_progressdialog_spinner.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_purple.png b/tests/res/drawable-large-mdpi/holo_land_purple.png
new file mode 100644
index 0000000..bd675cf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_purple.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_radiobutton.png b/tests/res/drawable-large-mdpi/holo_land_radiobutton.png
new file mode 100644
index 0000000..51d8b24
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_radiobutton.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_radiobutton_checked.png b/tests/res/drawable-large-mdpi/holo_land_radiobutton_checked.png
new file mode 100644
index 0000000..bde1275
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_radiobutton_checked.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_radiogroup_horizontal.png b/tests/res/drawable-large-mdpi/holo_land_radiogroup_horizontal.png
new file mode 100644
index 0000000..36ab0ba
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_radiogroup_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_radiogroup_vertical.png b/tests/res/drawable-large-mdpi/holo_land_radiogroup_vertical.png
new file mode 100644
index 0000000..fa86a42
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_radiogroup_vertical.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_ratingbar_0.png b/tests/res/drawable-large-mdpi/holo_land_ratingbar_0.png
new file mode 100644
index 0000000..79ce56d
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_ratingbar_0.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_ratingbar_0_pressed.png b/tests/res/drawable-large-mdpi/holo_land_ratingbar_0_pressed.png
new file mode 100644
index 0000000..280f112
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_ratingbar_0_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_ratingbar_2point5.png b/tests/res/drawable-large-mdpi/holo_land_ratingbar_2point5.png
new file mode 100644
index 0000000..cef353c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_ratingbar_2point5.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_ratingbar_2point5_pressed.png b/tests/res/drawable-large-mdpi/holo_land_ratingbar_2point5_pressed.png
new file mode 100644
index 0000000..43861f0
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_ratingbar_2point5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_ratingbar_5.png b/tests/res/drawable-large-mdpi/holo_land_ratingbar_5.png
new file mode 100644
index 0000000..c4dfb98
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_ratingbar_5.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_ratingbar_5_pressed.png b/tests/res/drawable-large-mdpi/holo_land_ratingbar_5_pressed.png
new file mode 100644
index 0000000..21394c0
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_ratingbar_5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_red_dark.png b/tests/res/drawable-large-mdpi/holo_land_red_dark.png
new file mode 100644
index 0000000..d1cd083
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_red_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_red_light.png b/tests/res/drawable-large-mdpi/holo_land_red_light.png
new file mode 100644
index 0000000..be9c322
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_red_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_searchview.png b/tests/res/drawable-large-mdpi/holo_land_searchview.png
new file mode 100644
index 0000000..03cca52
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_searchview.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_searchview_query.png b/tests/res/drawable-large-mdpi/holo_land_searchview_query.png
new file mode 100644
index 0000000..6648294
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_searchview_query.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_searchview_queryhint.png b/tests/res/drawable-large-mdpi/holo_land_searchview_queryhint.png
new file mode 100644
index 0000000..9310fb2
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_searchview_queryhint.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_seekbar_0.png b/tests/res/drawable-large-mdpi/holo_land_seekbar_0.png
new file mode 100644
index 0000000..d108ed8
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_seekbar_0.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_seekbar_100.png b/tests/res/drawable-large-mdpi/holo_land_seekbar_100.png
new file mode 100644
index 0000000..cffc154
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_seekbar_100.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_seekbar_50.png b/tests/res/drawable-large-mdpi/holo_land_seekbar_50.png
new file mode 100644
index 0000000..4ac8cb1
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_seekbar_50.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_spinner.png b/tests/res/drawable-large-mdpi/holo_land_spinner.png
new file mode 100644
index 0000000..26fe0f0
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_spinner.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_tabhost.png b/tests/res/drawable-large-mdpi/holo_land_tabhost.png
new file mode 100644
index 0000000..1f40246
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_tabhost.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_textview.png b/tests/res/drawable-large-mdpi/holo_land_textview.png
new file mode 100644
index 0000000..4c8960c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_textview.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_toggle_button.png b/tests/res/drawable-large-mdpi/holo_land_toggle_button.png
new file mode 100644
index 0000000..1efa0d2
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_toggle_button.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_toggle_button_checked.png b/tests/res/drawable-large-mdpi/holo_land_toggle_button_checked.png
new file mode 100644
index 0000000..b63a5cc
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_toggle_button_checked.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_land_zoomcontrols.png b/tests/res/drawable-large-mdpi/holo_land_zoomcontrols.png
new file mode 100644
index 0000000..7892bcf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_land_zoomcontrols.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_actionbar.png b/tests/res/drawable-large-mdpi/holo_light_land_actionbar.png
new file mode 100644
index 0000000..304d729
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_actionbar.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_actionbar_action_items.png b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_action_items.png
new file mode 100644
index 0000000..fdb6255
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_action_items.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_actionbar_action_view.png b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_action_view.png
new file mode 100644
index 0000000..e82723a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_action_view.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_actionbar_home_as_up.png b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_home_as_up.png
new file mode 100644
index 0000000..10726a7
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_home_as_up.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_actionbar_list.png b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_list.png
new file mode 100644
index 0000000..ac4b719
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_list.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_actionbar_no_icon.png b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_no_icon.png
new file mode 100644
index 0000000..3c87b08
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_no_icon.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_actionbar_no_title.png b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_no_title.png
new file mode 100644
index 0000000..c4f845f
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_no_title.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_actionbar_tabs.png b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_tabs.png
new file mode 100644
index 0000000..4cd9e51
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_actionbar_tabs.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_list.png b/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_list.png
new file mode 100644
index 0000000..2a8fe43
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_list.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_multichoice.png b/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_multichoice.png
new file mode 100644
index 0000000..37317cf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_multichoice.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_onebutton.png b/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_onebutton.png
new file mode 100644
index 0000000..2b4f033
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_onebutton.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_singlechoice.png b/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_singlechoice.png
new file mode 100644
index 0000000..077bad6
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_singlechoice.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_threebuttons.png b/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_threebuttons.png
new file mode 100644
index 0000000..d1ddec3
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_threebuttons.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_twobuttons.png b/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_twobuttons.png
new file mode 100644
index 0000000..38b5627
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_alertdialog_twobuttons.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_blue_bright.png b/tests/res/drawable-large-mdpi/holo_light_land_blue_bright.png
new file mode 100644
index 0000000..2c9b47a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_blue_bright.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_blue_dark.png b/tests/res/drawable-large-mdpi/holo_light_land_blue_dark.png
new file mode 100644
index 0000000..2f9446c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_blue_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_blue_light.png b/tests/res/drawable-large-mdpi/holo_light_land_blue_light.png
new file mode 100644
index 0000000..ce14078
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_blue_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_button.png b/tests/res/drawable-large-mdpi/holo_light_land_button.png
new file mode 100644
index 0000000..98e6d5f
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_button.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_button_pressed.png b/tests/res/drawable-large-mdpi/holo_light_land_button_pressed.png
new file mode 100644
index 0000000..94c82b2
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_button_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_calendarview.png b/tests/res/drawable-large-mdpi/holo_light_land_calendarview.png
new file mode 100644
index 0000000..3c2ed47
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_calendarview.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_checkbox.png b/tests/res/drawable-large-mdpi/holo_light_land_checkbox.png
new file mode 100644
index 0000000..b4d6daf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_checkbox.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_checkbox_checked.png b/tests/res/drawable-large-mdpi/holo_light_land_checkbox_checked.png
new file mode 100644
index 0000000..5e27734
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_checkbox_checked.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_edittext.png b/tests/res/drawable-large-mdpi/holo_light_land_edittext.png
new file mode 100644
index 0000000..0a41325
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_edittext.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_green_dark.png b/tests/res/drawable-large-mdpi/holo_light_land_green_dark.png
new file mode 100644
index 0000000..f9ae8c4
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_green_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_green_light.png b/tests/res/drawable-large-mdpi/holo_light_land_green_light.png
new file mode 100644
index 0000000..ec19ed9
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_green_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_orange_dark.png b/tests/res/drawable-large-mdpi/holo_light_land_orange_dark.png
new file mode 100644
index 0000000..33f5bae
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_orange_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_orange_light.png b/tests/res/drawable-large-mdpi/holo_light_land_orange_light.png
new file mode 100644
index 0000000..d4184b7
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_orange_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_progressbar.png b/tests/res/drawable-large-mdpi/holo_light_land_progressbar.png
new file mode 100644
index 0000000..e4dd24d
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_progressbar.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_progressbar_horizontal0.png b/tests/res/drawable-large-mdpi/holo_light_land_progressbar_horizontal0.png
new file mode 100644
index 0000000..37674f5
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_progressbar_horizontal0.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_progressbar_horizontal100.png b/tests/res/drawable-large-mdpi/holo_light_land_progressbar_horizontal100.png
new file mode 100644
index 0000000..3d90314
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_progressbar_horizontal100.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_progressbar_horizontal50.png b/tests/res/drawable-large-mdpi/holo_light_land_progressbar_horizontal50.png
new file mode 100644
index 0000000..42d3bf1
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_progressbar_horizontal50.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_progressbar_large.png b/tests/res/drawable-large-mdpi/holo_light_land_progressbar_large.png
new file mode 100644
index 0000000..a266699
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_progressbar_large.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_progressbar_small.png b/tests/res/drawable-large-mdpi/holo_light_land_progressbar_small.png
new file mode 100644
index 0000000..495c73a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_progressbar_small.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_progressdialog_horizontal.png b/tests/res/drawable-large-mdpi/holo_light_land_progressdialog_horizontal.png
new file mode 100644
index 0000000..aca81fe
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_progressdialog_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_progressdialog_spinner.png b/tests/res/drawable-large-mdpi/holo_light_land_progressdialog_spinner.png
new file mode 100644
index 0000000..c2a43b6
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_progressdialog_spinner.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_purple.png b/tests/res/drawable-large-mdpi/holo_light_land_purple.png
new file mode 100644
index 0000000..bd675cf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_purple.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_radiobutton.png b/tests/res/drawable-large-mdpi/holo_light_land_radiobutton.png
new file mode 100644
index 0000000..9cb438e
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_radiobutton.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_radiobutton_checked.png b/tests/res/drawable-large-mdpi/holo_light_land_radiobutton_checked.png
new file mode 100644
index 0000000..2999134
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_radiobutton_checked.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_radiogroup_horizontal.png b/tests/res/drawable-large-mdpi/holo_light_land_radiogroup_horizontal.png
new file mode 100644
index 0000000..e67c2c9
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_radiogroup_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_radiogroup_vertical.png b/tests/res/drawable-large-mdpi/holo_light_land_radiogroup_vertical.png
new file mode 100644
index 0000000..889c0a4
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_radiogroup_vertical.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_0.png b/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_0.png
new file mode 100644
index 0000000..cc8427c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_0.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_0_pressed.png b/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_0_pressed.png
new file mode 100644
index 0000000..48a3c69
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_0_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_2point5.png b/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_2point5.png
new file mode 100644
index 0000000..fd0783b
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_2point5.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_2point5_pressed.png b/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_2point5_pressed.png
new file mode 100644
index 0000000..f1c344c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_2point5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_5.png b/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_5.png
new file mode 100644
index 0000000..baedae5
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_5.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_5_pressed.png b/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_5_pressed.png
new file mode 100644
index 0000000..7bd94f0
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_ratingbar_5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_red_dark.png b/tests/res/drawable-large-mdpi/holo_light_land_red_dark.png
new file mode 100644
index 0000000..d1cd083
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_red_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_red_light.png b/tests/res/drawable-large-mdpi/holo_light_land_red_light.png
new file mode 100644
index 0000000..be9c322
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_red_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_searchview.png b/tests/res/drawable-large-mdpi/holo_light_land_searchview.png
new file mode 100644
index 0000000..4c7706a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_searchview.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_searchview_query.png b/tests/res/drawable-large-mdpi/holo_light_land_searchview_query.png
new file mode 100644
index 0000000..d8fdfb2
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_searchview_query.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_searchview_queryhint.png b/tests/res/drawable-large-mdpi/holo_light_land_searchview_queryhint.png
new file mode 100644
index 0000000..29ee7f4
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_searchview_queryhint.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_seekbar_0.png b/tests/res/drawable-large-mdpi/holo_light_land_seekbar_0.png
new file mode 100644
index 0000000..ad094a5
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_seekbar_0.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_seekbar_100.png b/tests/res/drawable-large-mdpi/holo_light_land_seekbar_100.png
new file mode 100644
index 0000000..cffc154
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_seekbar_100.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_seekbar_50.png b/tests/res/drawable-large-mdpi/holo_light_land_seekbar_50.png
new file mode 100644
index 0000000..e1d4f60b
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_seekbar_50.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_spinner.png b/tests/res/drawable-large-mdpi/holo_light_land_spinner.png
new file mode 100644
index 0000000..9698eaf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_spinner.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_tabhost.png b/tests/res/drawable-large-mdpi/holo_light_land_tabhost.png
new file mode 100644
index 0000000..1f40246
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_tabhost.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_textview.png b/tests/res/drawable-large-mdpi/holo_light_land_textview.png
new file mode 100644
index 0000000..7ca9613
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_textview.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_toggle_button.png b/tests/res/drawable-large-mdpi/holo_light_land_toggle_button.png
new file mode 100644
index 0000000..9660382
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_toggle_button.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_toggle_button_checked.png b/tests/res/drawable-large-mdpi/holo_light_land_toggle_button_checked.png
new file mode 100644
index 0000000..0facd90
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_toggle_button_checked.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_land_zoomcontrols.png b/tests/res/drawable-large-mdpi/holo_light_land_zoomcontrols.png
new file mode 100644
index 0000000..7892bcf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_land_zoomcontrols.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_actionbar.png b/tests/res/drawable-large-mdpi/holo_light_port_actionbar.png
new file mode 100644
index 0000000..583f7f5
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_actionbar.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_actionbar_action_items.png b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_action_items.png
new file mode 100644
index 0000000..275bb0a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_action_items.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_actionbar_action_view.png b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_action_view.png
new file mode 100644
index 0000000..68f80ea
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_action_view.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_actionbar_home_as_up.png b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_home_as_up.png
new file mode 100644
index 0000000..2d0bed1
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_home_as_up.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_actionbar_list.png b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_list.png
new file mode 100644
index 0000000..503c417
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_list.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_actionbar_no_icon.png b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_no_icon.png
new file mode 100644
index 0000000..e01e29b
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_no_icon.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_actionbar_no_title.png b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_no_title.png
new file mode 100644
index 0000000..45e8e6e
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_no_title.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_actionbar_tabs.png b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_tabs.png
new file mode 100644
index 0000000..5478aaf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_actionbar_tabs.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_list.png b/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_list.png
new file mode 100644
index 0000000..2a8fe43
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_list.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_multichoice.png b/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_multichoice.png
new file mode 100644
index 0000000..37317cf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_multichoice.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_onebutton.png b/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_onebutton.png
new file mode 100644
index 0000000..2b4f033
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_onebutton.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_singlechoice.png b/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_singlechoice.png
new file mode 100644
index 0000000..077bad6
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_singlechoice.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_threebuttons.png b/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_threebuttons.png
new file mode 100644
index 0000000..d1ddec3
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_threebuttons.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_twobuttons.png b/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_twobuttons.png
new file mode 100644
index 0000000..38b5627
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_alertdialog_twobuttons.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_blue_bright.png b/tests/res/drawable-large-mdpi/holo_light_port_blue_bright.png
new file mode 100644
index 0000000..2c9b47a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_blue_bright.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_blue_dark.png b/tests/res/drawable-large-mdpi/holo_light_port_blue_dark.png
new file mode 100644
index 0000000..2f9446c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_blue_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_blue_light.png b/tests/res/drawable-large-mdpi/holo_light_port_blue_light.png
new file mode 100644
index 0000000..ce14078
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_blue_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_button.png b/tests/res/drawable-large-mdpi/holo_light_port_button.png
new file mode 100644
index 0000000..98e6d5f
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_button.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_button_pressed.png b/tests/res/drawable-large-mdpi/holo_light_port_button_pressed.png
new file mode 100644
index 0000000..94c82b2
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_button_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_calendarview.png b/tests/res/drawable-large-mdpi/holo_light_port_calendarview.png
new file mode 100644
index 0000000..09dac3f
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_calendarview.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_checkbox.png b/tests/res/drawable-large-mdpi/holo_light_port_checkbox.png
new file mode 100644
index 0000000..b4d6daf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_checkbox.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_checkbox_checked.png b/tests/res/drawable-large-mdpi/holo_light_port_checkbox_checked.png
new file mode 100644
index 0000000..5e27734
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_checkbox_checked.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_edittext.png b/tests/res/drawable-large-mdpi/holo_light_port_edittext.png
new file mode 100644
index 0000000..ef0b07f
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_edittext.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_green_dark.png b/tests/res/drawable-large-mdpi/holo_light_port_green_dark.png
new file mode 100644
index 0000000..f9ae8c4
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_green_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_green_light.png b/tests/res/drawable-large-mdpi/holo_light_port_green_light.png
new file mode 100644
index 0000000..ec19ed9
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_green_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_orange_dark.png b/tests/res/drawable-large-mdpi/holo_light_port_orange_dark.png
new file mode 100644
index 0000000..33f5bae
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_orange_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_orange_light.png b/tests/res/drawable-large-mdpi/holo_light_port_orange_light.png
new file mode 100644
index 0000000..d4184b7
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_orange_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_progressbar.png b/tests/res/drawable-large-mdpi/holo_light_port_progressbar.png
new file mode 100644
index 0000000..e4dd24d
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_progressbar.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_progressbar_horizontal0.png b/tests/res/drawable-large-mdpi/holo_light_port_progressbar_horizontal0.png
new file mode 100644
index 0000000..81a357c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_progressbar_horizontal0.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_progressbar_horizontal100.png b/tests/res/drawable-large-mdpi/holo_light_port_progressbar_horizontal100.png
new file mode 100644
index 0000000..7e7f0db
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_progressbar_horizontal100.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_progressbar_horizontal50.png b/tests/res/drawable-large-mdpi/holo_light_port_progressbar_horizontal50.png
new file mode 100644
index 0000000..d5e813b
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_progressbar_horizontal50.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_progressbar_large.png b/tests/res/drawable-large-mdpi/holo_light_port_progressbar_large.png
new file mode 100644
index 0000000..a266699
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_progressbar_large.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_progressbar_small.png b/tests/res/drawable-large-mdpi/holo_light_port_progressbar_small.png
new file mode 100644
index 0000000..495c73a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_progressbar_small.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_progressdialog_horizontal.png b/tests/res/drawable-large-mdpi/holo_light_port_progressdialog_horizontal.png
new file mode 100644
index 0000000..aca81fe
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_progressdialog_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_progressdialog_spinner.png b/tests/res/drawable-large-mdpi/holo_light_port_progressdialog_spinner.png
new file mode 100644
index 0000000..c2a43b6
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_progressdialog_spinner.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_purple.png b/tests/res/drawable-large-mdpi/holo_light_port_purple.png
new file mode 100644
index 0000000..bd675cf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_purple.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_radiobutton.png b/tests/res/drawable-large-mdpi/holo_light_port_radiobutton.png
new file mode 100644
index 0000000..9cb438e
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_radiobutton.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_radiobutton_checked.png b/tests/res/drawable-large-mdpi/holo_light_port_radiobutton_checked.png
new file mode 100644
index 0000000..2999134
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_radiobutton_checked.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_radiogroup_horizontal.png b/tests/res/drawable-large-mdpi/holo_light_port_radiogroup_horizontal.png
new file mode 100644
index 0000000..e67c2c9
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_radiogroup_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_radiogroup_vertical.png b/tests/res/drawable-large-mdpi/holo_light_port_radiogroup_vertical.png
new file mode 100644
index 0000000..889c0a4
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_radiogroup_vertical.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_0.png b/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_0.png
new file mode 100644
index 0000000..cc8427c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_0.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_0_pressed.png b/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_0_pressed.png
new file mode 100644
index 0000000..48a3c69
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_0_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_2point5.png b/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_2point5.png
new file mode 100644
index 0000000..fd0783b
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_2point5.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_2point5_pressed.png b/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_2point5_pressed.png
new file mode 100644
index 0000000..f1c344c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_2point5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_5.png b/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_5.png
new file mode 100644
index 0000000..baedae5
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_5.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_5_pressed.png b/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_5_pressed.png
new file mode 100644
index 0000000..7bd94f0
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_ratingbar_5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_red_dark.png b/tests/res/drawable-large-mdpi/holo_light_port_red_dark.png
new file mode 100644
index 0000000..d1cd083
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_red_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_red_light.png b/tests/res/drawable-large-mdpi/holo_light_port_red_light.png
new file mode 100644
index 0000000..be9c322
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_red_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_searchview.png b/tests/res/drawable-large-mdpi/holo_light_port_searchview.png
new file mode 100644
index 0000000..20b35c4
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_searchview.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_searchview_query.png b/tests/res/drawable-large-mdpi/holo_light_port_searchview_query.png
new file mode 100644
index 0000000..177a521
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_searchview_query.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_searchview_queryhint.png b/tests/res/drawable-large-mdpi/holo_light_port_searchview_queryhint.png
new file mode 100644
index 0000000..71958f0
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_searchview_queryhint.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_seekbar_0.png b/tests/res/drawable-large-mdpi/holo_light_port_seekbar_0.png
new file mode 100644
index 0000000..029c0d4
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_seekbar_0.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_seekbar_100.png b/tests/res/drawable-large-mdpi/holo_light_port_seekbar_100.png
new file mode 100644
index 0000000..439732c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_seekbar_100.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_seekbar_50.png b/tests/res/drawable-large-mdpi/holo_light_port_seekbar_50.png
new file mode 100644
index 0000000..dc66874
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_seekbar_50.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_spinner.png b/tests/res/drawable-large-mdpi/holo_light_port_spinner.png
new file mode 100644
index 0000000..9698eaf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_spinner.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_tabhost.png b/tests/res/drawable-large-mdpi/holo_light_port_tabhost.png
new file mode 100644
index 0000000..e0dc779
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_tabhost.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_textview.png b/tests/res/drawable-large-mdpi/holo_light_port_textview.png
new file mode 100644
index 0000000..7ca9613
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_textview.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_toggle_button.png b/tests/res/drawable-large-mdpi/holo_light_port_toggle_button.png
new file mode 100644
index 0000000..9660382
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_toggle_button.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_toggle_button_checked.png b/tests/res/drawable-large-mdpi/holo_light_port_toggle_button_checked.png
new file mode 100644
index 0000000..0facd90
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_toggle_button_checked.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_light_port_zoomcontrols.png b/tests/res/drawable-large-mdpi/holo_light_port_zoomcontrols.png
new file mode 100644
index 0000000..7892bcf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_light_port_zoomcontrols.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_actionbar.png b/tests/res/drawable-large-mdpi/holo_port_actionbar.png
new file mode 100644
index 0000000..239cb23
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_actionbar.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_actionbar_action_items.png b/tests/res/drawable-large-mdpi/holo_port_actionbar_action_items.png
new file mode 100644
index 0000000..c6388af
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_actionbar_action_items.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_actionbar_action_view.png b/tests/res/drawable-large-mdpi/holo_port_actionbar_action_view.png
new file mode 100644
index 0000000..1120c27
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_actionbar_action_view.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_actionbar_home_as_up.png b/tests/res/drawable-large-mdpi/holo_port_actionbar_home_as_up.png
new file mode 100644
index 0000000..c3870dc
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_actionbar_home_as_up.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_actionbar_list.png b/tests/res/drawable-large-mdpi/holo_port_actionbar_list.png
new file mode 100644
index 0000000..8fb0c92
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_actionbar_list.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_actionbar_no_icon.png b/tests/res/drawable-large-mdpi/holo_port_actionbar_no_icon.png
new file mode 100644
index 0000000..2042c83
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_actionbar_no_icon.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_actionbar_no_title.png b/tests/res/drawable-large-mdpi/holo_port_actionbar_no_title.png
new file mode 100644
index 0000000..1738684
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_actionbar_no_title.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_actionbar_tabs.png b/tests/res/drawable-large-mdpi/holo_port_actionbar_tabs.png
new file mode 100644
index 0000000..8936215
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_actionbar_tabs.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_alertdialog_list.png b/tests/res/drawable-large-mdpi/holo_port_alertdialog_list.png
new file mode 100644
index 0000000..091f5c6
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_alertdialog_list.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_alertdialog_multichoice.png b/tests/res/drawable-large-mdpi/holo_port_alertdialog_multichoice.png
new file mode 100644
index 0000000..fa2616e
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_alertdialog_multichoice.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_alertdialog_onebutton.png b/tests/res/drawable-large-mdpi/holo_port_alertdialog_onebutton.png
new file mode 100644
index 0000000..43d40eb
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_alertdialog_onebutton.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_alertdialog_singlechoice.png b/tests/res/drawable-large-mdpi/holo_port_alertdialog_singlechoice.png
new file mode 100644
index 0000000..5682bc8
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_alertdialog_singlechoice.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_alertdialog_threebuttons.png b/tests/res/drawable-large-mdpi/holo_port_alertdialog_threebuttons.png
new file mode 100644
index 0000000..78b7029
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_alertdialog_threebuttons.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_alertdialog_twobuttons.png b/tests/res/drawable-large-mdpi/holo_port_alertdialog_twobuttons.png
new file mode 100644
index 0000000..3fbcc9c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_alertdialog_twobuttons.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_blue_bright.png b/tests/res/drawable-large-mdpi/holo_port_blue_bright.png
new file mode 100644
index 0000000..2c9b47a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_blue_bright.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_blue_dark.png b/tests/res/drawable-large-mdpi/holo_port_blue_dark.png
new file mode 100644
index 0000000..2f9446c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_blue_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_blue_light.png b/tests/res/drawable-large-mdpi/holo_port_blue_light.png
new file mode 100644
index 0000000..ce14078
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_blue_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_button.png b/tests/res/drawable-large-mdpi/holo_port_button.png
new file mode 100644
index 0000000..25cfc2d
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_button.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_button_pressed.png b/tests/res/drawable-large-mdpi/holo_port_button_pressed.png
new file mode 100644
index 0000000..6b1e5d2
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_button_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_calendarview.png b/tests/res/drawable-large-mdpi/holo_port_calendarview.png
new file mode 100644
index 0000000..6801de6
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_calendarview.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_checkbox.png b/tests/res/drawable-large-mdpi/holo_port_checkbox.png
new file mode 100644
index 0000000..1c8f6ed
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_checkbox.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_checkbox_checked.png b/tests/res/drawable-large-mdpi/holo_port_checkbox_checked.png
new file mode 100644
index 0000000..2df82f3
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_checkbox_checked.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_edittext.png b/tests/res/drawable-large-mdpi/holo_port_edittext.png
new file mode 100644
index 0000000..9cc62f0
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_edittext.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_green_dark.png b/tests/res/drawable-large-mdpi/holo_port_green_dark.png
new file mode 100644
index 0000000..f9ae8c4
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_green_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_green_light.png b/tests/res/drawable-large-mdpi/holo_port_green_light.png
new file mode 100644
index 0000000..ec19ed9
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_green_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_orange_dark.png b/tests/res/drawable-large-mdpi/holo_port_orange_dark.png
new file mode 100644
index 0000000..33f5bae
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_orange_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_orange_light.png b/tests/res/drawable-large-mdpi/holo_port_orange_light.png
new file mode 100644
index 0000000..d4184b7
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_orange_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_progressbar.png b/tests/res/drawable-large-mdpi/holo_port_progressbar.png
new file mode 100644
index 0000000..e4dd24d
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_progressbar.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_progressbar_horizontal0.png b/tests/res/drawable-large-mdpi/holo_port_progressbar_horizontal0.png
new file mode 100644
index 0000000..81a357c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_progressbar_horizontal0.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_progressbar_horizontal100.png b/tests/res/drawable-large-mdpi/holo_port_progressbar_horizontal100.png
new file mode 100644
index 0000000..7e7f0db
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_progressbar_horizontal100.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_progressbar_horizontal50.png b/tests/res/drawable-large-mdpi/holo_port_progressbar_horizontal50.png
new file mode 100644
index 0000000..d5e813b
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_progressbar_horizontal50.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_progressbar_large.png b/tests/res/drawable-large-mdpi/holo_port_progressbar_large.png
new file mode 100644
index 0000000..a266699
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_progressbar_large.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_progressbar_small.png b/tests/res/drawable-large-mdpi/holo_port_progressbar_small.png
new file mode 100644
index 0000000..495c73a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_progressbar_small.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_progressdialog_horizontal.png b/tests/res/drawable-large-mdpi/holo_port_progressdialog_horizontal.png
new file mode 100644
index 0000000..d6d581a
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_progressdialog_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_progressdialog_spinner.png b/tests/res/drawable-large-mdpi/holo_port_progressdialog_spinner.png
new file mode 100644
index 0000000..2760cac
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_progressdialog_spinner.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_purple.png b/tests/res/drawable-large-mdpi/holo_port_purple.png
new file mode 100644
index 0000000..bd675cf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_purple.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_radiobutton.png b/tests/res/drawable-large-mdpi/holo_port_radiobutton.png
new file mode 100644
index 0000000..51d8b24
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_radiobutton.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_radiobutton_checked.png b/tests/res/drawable-large-mdpi/holo_port_radiobutton_checked.png
new file mode 100644
index 0000000..bde1275
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_radiobutton_checked.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_radiogroup_horizontal.png b/tests/res/drawable-large-mdpi/holo_port_radiogroup_horizontal.png
new file mode 100644
index 0000000..36ab0ba
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_radiogroup_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_radiogroup_vertical.png b/tests/res/drawable-large-mdpi/holo_port_radiogroup_vertical.png
new file mode 100644
index 0000000..fa86a42
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_radiogroup_vertical.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_ratingbar_0.png b/tests/res/drawable-large-mdpi/holo_port_ratingbar_0.png
new file mode 100644
index 0000000..79ce56d
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_ratingbar_0.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_ratingbar_0_pressed.png b/tests/res/drawable-large-mdpi/holo_port_ratingbar_0_pressed.png
new file mode 100644
index 0000000..280f112
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_ratingbar_0_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_ratingbar_2point5.png b/tests/res/drawable-large-mdpi/holo_port_ratingbar_2point5.png
new file mode 100644
index 0000000..cef353c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_ratingbar_2point5.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_ratingbar_2point5_pressed.png b/tests/res/drawable-large-mdpi/holo_port_ratingbar_2point5_pressed.png
new file mode 100644
index 0000000..43861f0
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_ratingbar_2point5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_ratingbar_5.png b/tests/res/drawable-large-mdpi/holo_port_ratingbar_5.png
new file mode 100644
index 0000000..c4dfb98
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_ratingbar_5.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_ratingbar_5_pressed.png b/tests/res/drawable-large-mdpi/holo_port_ratingbar_5_pressed.png
new file mode 100644
index 0000000..21394c0
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_ratingbar_5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_red_dark.png b/tests/res/drawable-large-mdpi/holo_port_red_dark.png
new file mode 100644
index 0000000..d1cd083
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_red_dark.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_red_light.png b/tests/res/drawable-large-mdpi/holo_port_red_light.png
new file mode 100644
index 0000000..be9c322
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_red_light.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_searchview.png b/tests/res/drawable-large-mdpi/holo_port_searchview.png
new file mode 100644
index 0000000..6204058
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_searchview.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_searchview_query.png b/tests/res/drawable-large-mdpi/holo_port_searchview_query.png
new file mode 100644
index 0000000..d7b0665
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_searchview_query.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_searchview_queryhint.png b/tests/res/drawable-large-mdpi/holo_port_searchview_queryhint.png
new file mode 100644
index 0000000..75d8821
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_searchview_queryhint.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_seekbar_0.png b/tests/res/drawable-large-mdpi/holo_port_seekbar_0.png
new file mode 100644
index 0000000..8eb7f64
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_seekbar_0.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_seekbar_100.png b/tests/res/drawable-large-mdpi/holo_port_seekbar_100.png
new file mode 100644
index 0000000..439732c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_seekbar_100.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_seekbar_50.png b/tests/res/drawable-large-mdpi/holo_port_seekbar_50.png
new file mode 100644
index 0000000..1bd6de0
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_seekbar_50.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_spinner.png b/tests/res/drawable-large-mdpi/holo_port_spinner.png
new file mode 100644
index 0000000..26fe0f0
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_spinner.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_tabhost.png b/tests/res/drawable-large-mdpi/holo_port_tabhost.png
new file mode 100644
index 0000000..e0dc779
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_tabhost.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_textview.png b/tests/res/drawable-large-mdpi/holo_port_textview.png
new file mode 100644
index 0000000..4c8960c
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_textview.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_toggle_button.png b/tests/res/drawable-large-mdpi/holo_port_toggle_button.png
new file mode 100644
index 0000000..1efa0d2
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_toggle_button.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_toggle_button_checked.png b/tests/res/drawable-large-mdpi/holo_port_toggle_button_checked.png
new file mode 100644
index 0000000..b63a5cc
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_toggle_button_checked.png
Binary files differ
diff --git a/tests/res/drawable-large-mdpi/holo_port_zoomcontrols.png b/tests/res/drawable-large-mdpi/holo_port_zoomcontrols.png
new file mode 100644
index 0000000..7892bcf
--- /dev/null
+++ b/tests/res/drawable-large-mdpi/holo_port_zoomcontrols.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_actionbar.png b/tests/res/drawable-mdpi/holo_land_actionbar.png
new file mode 100644
index 0000000..629f7db
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_actionbar.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_actionbar_action_items.png b/tests/res/drawable-mdpi/holo_land_actionbar_action_items.png
new file mode 100644
index 0000000..494e7af
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_actionbar_action_items.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_actionbar_action_view.png b/tests/res/drawable-mdpi/holo_land_actionbar_action_view.png
new file mode 100644
index 0000000..f843280
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_actionbar_action_view.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_actionbar_home_as_up.png b/tests/res/drawable-mdpi/holo_land_actionbar_home_as_up.png
new file mode 100644
index 0000000..9e13a33
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_actionbar_home_as_up.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_actionbar_list.png b/tests/res/drawable-mdpi/holo_land_actionbar_list.png
new file mode 100644
index 0000000..48d60e1
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_actionbar_list.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_actionbar_no_icon.png b/tests/res/drawable-mdpi/holo_land_actionbar_no_icon.png
new file mode 100644
index 0000000..c5fd6f9b
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_actionbar_no_icon.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_actionbar_no_title.png b/tests/res/drawable-mdpi/holo_land_actionbar_no_title.png
new file mode 100644
index 0000000..90bf752
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_actionbar_no_title.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_actionbar_tabs.png b/tests/res/drawable-mdpi/holo_land_actionbar_tabs.png
new file mode 100644
index 0000000..a15b528
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_actionbar_tabs.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_alertdialog_list.png b/tests/res/drawable-mdpi/holo_land_alertdialog_list.png
new file mode 100644
index 0000000..03b2e0f
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_alertdialog_list.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_alertdialog_multichoice.png b/tests/res/drawable-mdpi/holo_land_alertdialog_multichoice.png
new file mode 100644
index 0000000..0badbb7
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_alertdialog_multichoice.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_alertdialog_onebutton.png b/tests/res/drawable-mdpi/holo_land_alertdialog_onebutton.png
new file mode 100644
index 0000000..b2fe321
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_alertdialog_onebutton.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_alertdialog_singlechoice.png b/tests/res/drawable-mdpi/holo_land_alertdialog_singlechoice.png
new file mode 100644
index 0000000..fa91e62
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_alertdialog_singlechoice.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_alertdialog_threebuttons.png b/tests/res/drawable-mdpi/holo_land_alertdialog_threebuttons.png
new file mode 100644
index 0000000..a55987a
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_alertdialog_threebuttons.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_alertdialog_twobuttons.png b/tests/res/drawable-mdpi/holo_land_alertdialog_twobuttons.png
new file mode 100644
index 0000000..7731a1c
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_alertdialog_twobuttons.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_blue_bright.png b/tests/res/drawable-mdpi/holo_land_blue_bright.png
new file mode 100644
index 0000000..6037326
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_blue_bright.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_blue_dark.png b/tests/res/drawable-mdpi/holo_land_blue_dark.png
new file mode 100644
index 0000000..289c582
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_blue_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_blue_light.png b/tests/res/drawable-mdpi/holo_land_blue_light.png
new file mode 100644
index 0000000..aecb9df
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_blue_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_button.png b/tests/res/drawable-mdpi/holo_land_button.png
new file mode 100644
index 0000000..25cfc2d
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_button.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_button_pressed.png b/tests/res/drawable-mdpi/holo_land_button_pressed.png
new file mode 100644
index 0000000..6b1e5d2
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_button_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_calendarview.png b/tests/res/drawable-mdpi/holo_land_calendarview.png
new file mode 100644
index 0000000..34008c2
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_calendarview.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_checkbox.png b/tests/res/drawable-mdpi/holo_land_checkbox.png
new file mode 100644
index 0000000..1c8f6ed
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_checkbox.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_checkbox_checked.png b/tests/res/drawable-mdpi/holo_land_checkbox_checked.png
new file mode 100644
index 0000000..2df82f3
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_checkbox_checked.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_edittext.png b/tests/res/drawable-mdpi/holo_land_edittext.png
new file mode 100644
index 0000000..0d1095c
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_edittext.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_green_dark.png b/tests/res/drawable-mdpi/holo_land_green_dark.png
new file mode 100644
index 0000000..b231719
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_green_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_green_light.png b/tests/res/drawable-mdpi/holo_land_green_light.png
new file mode 100644
index 0000000..e8e86c1
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_green_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_orange_dark.png b/tests/res/drawable-mdpi/holo_land_orange_dark.png
new file mode 100644
index 0000000..44961ec
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_orange_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_orange_light.png b/tests/res/drawable-mdpi/holo_land_orange_light.png
new file mode 100644
index 0000000..3f8dfb3
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_orange_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_progressbar.png b/tests/res/drawable-mdpi/holo_land_progressbar.png
new file mode 100644
index 0000000..e4dd24d
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_progressbar.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_progressbar_horizontal0.png b/tests/res/drawable-mdpi/holo_land_progressbar_horizontal0.png
new file mode 100644
index 0000000..6387f3d
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_progressbar_horizontal0.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_progressbar_horizontal100.png b/tests/res/drawable-mdpi/holo_land_progressbar_horizontal100.png
new file mode 100644
index 0000000..21ed2ca
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_progressbar_horizontal100.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_progressbar_horizontal50.png b/tests/res/drawable-mdpi/holo_land_progressbar_horizontal50.png
new file mode 100644
index 0000000..6ee425f
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_progressbar_horizontal50.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_progressbar_large.png b/tests/res/drawable-mdpi/holo_land_progressbar_large.png
new file mode 100644
index 0000000..a266699
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_progressbar_large.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_progressbar_small.png b/tests/res/drawable-mdpi/holo_land_progressbar_small.png
new file mode 100644
index 0000000..495c73a
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_progressbar_small.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_progressdialog_horizontal.png b/tests/res/drawable-mdpi/holo_land_progressdialog_horizontal.png
new file mode 100644
index 0000000..a8c1ac3
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_progressdialog_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_progressdialog_spinner.png b/tests/res/drawable-mdpi/holo_land_progressdialog_spinner.png
new file mode 100644
index 0000000..439518a
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_progressdialog_spinner.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_purple.png b/tests/res/drawable-mdpi/holo_land_purple.png
new file mode 100644
index 0000000..d2a004e
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_purple.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_radiobutton.png b/tests/res/drawable-mdpi/holo_land_radiobutton.png
new file mode 100644
index 0000000..51d8b24
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_radiobutton.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_radiobutton_checked.png b/tests/res/drawable-mdpi/holo_land_radiobutton_checked.png
new file mode 100644
index 0000000..bde1275
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_radiobutton_checked.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_radiogroup_horizontal.png b/tests/res/drawable-mdpi/holo_land_radiogroup_horizontal.png
new file mode 100644
index 0000000..36ab0ba
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_radiogroup_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_radiogroup_vertical.png b/tests/res/drawable-mdpi/holo_land_radiogroup_vertical.png
new file mode 100644
index 0000000..fa86a42
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_radiogroup_vertical.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_ratingbar_0.png b/tests/res/drawable-mdpi/holo_land_ratingbar_0.png
new file mode 100644
index 0000000..79ce56d
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_ratingbar_0.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_ratingbar_0_pressed.png b/tests/res/drawable-mdpi/holo_land_ratingbar_0_pressed.png
new file mode 100644
index 0000000..280f112
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_ratingbar_0_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_ratingbar_2point5.png b/tests/res/drawable-mdpi/holo_land_ratingbar_2point5.png
new file mode 100644
index 0000000..cef353c
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_ratingbar_2point5.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_ratingbar_2point5_pressed.png b/tests/res/drawable-mdpi/holo_land_ratingbar_2point5_pressed.png
new file mode 100644
index 0000000..43861f0
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_ratingbar_2point5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_ratingbar_5.png b/tests/res/drawable-mdpi/holo_land_ratingbar_5.png
new file mode 100644
index 0000000..c4dfb98
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_ratingbar_5.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_ratingbar_5_pressed.png b/tests/res/drawable-mdpi/holo_land_ratingbar_5_pressed.png
new file mode 100644
index 0000000..21394c0
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_ratingbar_5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_red_dark.png b/tests/res/drawable-mdpi/holo_land_red_dark.png
new file mode 100644
index 0000000..fd9aced
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_red_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_red_light.png b/tests/res/drawable-mdpi/holo_land_red_light.png
new file mode 100644
index 0000000..2555dc7
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_red_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_searchview.png b/tests/res/drawable-mdpi/holo_land_searchview.png
new file mode 100644
index 0000000..7e48423
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_searchview.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_searchview_query.png b/tests/res/drawable-mdpi/holo_land_searchview_query.png
new file mode 100644
index 0000000..57a66a1
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_searchview_query.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_searchview_queryhint.png b/tests/res/drawable-mdpi/holo_land_searchview_queryhint.png
new file mode 100644
index 0000000..69cc2b2
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_searchview_queryhint.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_seekbar_0.png b/tests/res/drawable-mdpi/holo_land_seekbar_0.png
new file mode 100644
index 0000000..c4dddbb
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_seekbar_0.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_seekbar_100.png b/tests/res/drawable-mdpi/holo_land_seekbar_100.png
new file mode 100644
index 0000000..1979fb4
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_seekbar_100.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_seekbar_50.png b/tests/res/drawable-mdpi/holo_land_seekbar_50.png
new file mode 100644
index 0000000..79b91ae
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_seekbar_50.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_spinner.png b/tests/res/drawable-mdpi/holo_land_spinner.png
new file mode 100644
index 0000000..c1f5c6a
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_spinner.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_tabhost.png b/tests/res/drawable-mdpi/holo_land_tabhost.png
new file mode 100644
index 0000000..8739702
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_tabhost.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_textview.png b/tests/res/drawable-mdpi/holo_land_textview.png
new file mode 100644
index 0000000..076f242
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_textview.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_toggle_button.png b/tests/res/drawable-mdpi/holo_land_toggle_button.png
new file mode 100644
index 0000000..1efa0d2
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_toggle_button.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_toggle_button_checked.png b/tests/res/drawable-mdpi/holo_land_toggle_button_checked.png
new file mode 100644
index 0000000..b63a5cc
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_toggle_button_checked.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_land_zoomcontrols.png b/tests/res/drawable-mdpi/holo_land_zoomcontrols.png
new file mode 100644
index 0000000..7892bcf
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_land_zoomcontrols.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_actionbar.png b/tests/res/drawable-mdpi/holo_light_land_actionbar.png
new file mode 100644
index 0000000..46d4c4f
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_actionbar.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_actionbar_action_items.png b/tests/res/drawable-mdpi/holo_light_land_actionbar_action_items.png
new file mode 100644
index 0000000..7063cb3
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_actionbar_action_items.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_actionbar_action_view.png b/tests/res/drawable-mdpi/holo_light_land_actionbar_action_view.png
new file mode 100644
index 0000000..880bda1
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_actionbar_action_view.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_actionbar_home_as_up.png b/tests/res/drawable-mdpi/holo_light_land_actionbar_home_as_up.png
new file mode 100644
index 0000000..1e53bb1
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_actionbar_home_as_up.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_actionbar_list.png b/tests/res/drawable-mdpi/holo_light_land_actionbar_list.png
new file mode 100644
index 0000000..bc63fb4
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_actionbar_list.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_actionbar_no_icon.png b/tests/res/drawable-mdpi/holo_light_land_actionbar_no_icon.png
new file mode 100644
index 0000000..5dbaa9e
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_actionbar_no_icon.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_actionbar_no_title.png b/tests/res/drawable-mdpi/holo_light_land_actionbar_no_title.png
new file mode 100644
index 0000000..9c0cc5f
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_actionbar_no_title.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_actionbar_tabs.png b/tests/res/drawable-mdpi/holo_light_land_actionbar_tabs.png
new file mode 100644
index 0000000..06bbdaa
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_actionbar_tabs.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_alertdialog_list.png b/tests/res/drawable-mdpi/holo_light_land_alertdialog_list.png
new file mode 100644
index 0000000..b3791c4
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_alertdialog_list.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_alertdialog_multichoice.png b/tests/res/drawable-mdpi/holo_light_land_alertdialog_multichoice.png
new file mode 100644
index 0000000..702acac
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_alertdialog_multichoice.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_alertdialog_onebutton.png b/tests/res/drawable-mdpi/holo_light_land_alertdialog_onebutton.png
new file mode 100644
index 0000000..5e1e0c2
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_alertdialog_onebutton.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_alertdialog_singlechoice.png b/tests/res/drawable-mdpi/holo_light_land_alertdialog_singlechoice.png
new file mode 100644
index 0000000..3150212
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_alertdialog_singlechoice.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_alertdialog_threebuttons.png b/tests/res/drawable-mdpi/holo_light_land_alertdialog_threebuttons.png
new file mode 100644
index 0000000..f343b0b
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_alertdialog_threebuttons.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_alertdialog_twobuttons.png b/tests/res/drawable-mdpi/holo_light_land_alertdialog_twobuttons.png
new file mode 100644
index 0000000..579a23c
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_alertdialog_twobuttons.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_blue_bright.png b/tests/res/drawable-mdpi/holo_light_land_blue_bright.png
new file mode 100644
index 0000000..6037326
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_blue_bright.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_blue_dark.png b/tests/res/drawable-mdpi/holo_light_land_blue_dark.png
new file mode 100644
index 0000000..289c582
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_blue_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_blue_light.png b/tests/res/drawable-mdpi/holo_light_land_blue_light.png
new file mode 100644
index 0000000..aecb9df
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_blue_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_button.png b/tests/res/drawable-mdpi/holo_light_land_button.png
new file mode 100644
index 0000000..98e6d5f
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_button.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_button_pressed.png b/tests/res/drawable-mdpi/holo_light_land_button_pressed.png
new file mode 100644
index 0000000..94c82b2
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_button_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_calendarview.png b/tests/res/drawable-mdpi/holo_light_land_calendarview.png
new file mode 100644
index 0000000..23a3584
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_calendarview.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_checkbox.png b/tests/res/drawable-mdpi/holo_light_land_checkbox.png
new file mode 100644
index 0000000..b4d6daf
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_checkbox.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_checkbox_checked.png b/tests/res/drawable-mdpi/holo_light_land_checkbox_checked.png
new file mode 100644
index 0000000..5e27734
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_checkbox_checked.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_edittext.png b/tests/res/drawable-mdpi/holo_light_land_edittext.png
new file mode 100644
index 0000000..a660c8b
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_edittext.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_green_dark.png b/tests/res/drawable-mdpi/holo_light_land_green_dark.png
new file mode 100644
index 0000000..b231719
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_green_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_green_light.png b/tests/res/drawable-mdpi/holo_light_land_green_light.png
new file mode 100644
index 0000000..e8e86c1
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_green_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_orange_dark.png b/tests/res/drawable-mdpi/holo_light_land_orange_dark.png
new file mode 100644
index 0000000..44961ec
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_orange_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_orange_light.png b/tests/res/drawable-mdpi/holo_light_land_orange_light.png
new file mode 100644
index 0000000..3f8dfb3
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_orange_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_progressbar.png b/tests/res/drawable-mdpi/holo_light_land_progressbar.png
new file mode 100644
index 0000000..e4dd24d
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_progressbar.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_progressbar_horizontal0.png b/tests/res/drawable-mdpi/holo_light_land_progressbar_horizontal0.png
new file mode 100644
index 0000000..6387f3d
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_progressbar_horizontal0.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_progressbar_horizontal100.png b/tests/res/drawable-mdpi/holo_light_land_progressbar_horizontal100.png
new file mode 100644
index 0000000..21ed2ca
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_progressbar_horizontal100.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_progressbar_horizontal50.png b/tests/res/drawable-mdpi/holo_light_land_progressbar_horizontal50.png
new file mode 100644
index 0000000..6ee425f
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_progressbar_horizontal50.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_progressbar_large.png b/tests/res/drawable-mdpi/holo_light_land_progressbar_large.png
new file mode 100644
index 0000000..a266699
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_progressbar_large.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_progressbar_small.png b/tests/res/drawable-mdpi/holo_light_land_progressbar_small.png
new file mode 100644
index 0000000..495c73a
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_progressbar_small.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_progressdialog_horizontal.png b/tests/res/drawable-mdpi/holo_light_land_progressdialog_horizontal.png
new file mode 100644
index 0000000..13c2291
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_progressdialog_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_progressdialog_spinner.png b/tests/res/drawable-mdpi/holo_light_land_progressdialog_spinner.png
new file mode 100644
index 0000000..dc5267e
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_progressdialog_spinner.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_purple.png b/tests/res/drawable-mdpi/holo_light_land_purple.png
new file mode 100644
index 0000000..d2a004e
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_purple.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_radiobutton.png b/tests/res/drawable-mdpi/holo_light_land_radiobutton.png
new file mode 100644
index 0000000..9cb438e
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_radiobutton.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_radiobutton_checked.png b/tests/res/drawable-mdpi/holo_light_land_radiobutton_checked.png
new file mode 100644
index 0000000..2999134
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_radiobutton_checked.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_radiogroup_horizontal.png b/tests/res/drawable-mdpi/holo_light_land_radiogroup_horizontal.png
new file mode 100644
index 0000000..e67c2c9
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_radiogroup_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_radiogroup_vertical.png b/tests/res/drawable-mdpi/holo_light_land_radiogroup_vertical.png
new file mode 100644
index 0000000..889c0a4
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_radiogroup_vertical.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_ratingbar_0.png b/tests/res/drawable-mdpi/holo_light_land_ratingbar_0.png
new file mode 100644
index 0000000..cc8427c
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_ratingbar_0.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_ratingbar_0_pressed.png b/tests/res/drawable-mdpi/holo_light_land_ratingbar_0_pressed.png
new file mode 100644
index 0000000..48a3c69
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_ratingbar_0_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_ratingbar_2point5.png b/tests/res/drawable-mdpi/holo_light_land_ratingbar_2point5.png
new file mode 100644
index 0000000..fd0783b
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_ratingbar_2point5.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_ratingbar_2point5_pressed.png b/tests/res/drawable-mdpi/holo_light_land_ratingbar_2point5_pressed.png
new file mode 100644
index 0000000..f1c344c
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_ratingbar_2point5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_ratingbar_5.png b/tests/res/drawable-mdpi/holo_light_land_ratingbar_5.png
new file mode 100644
index 0000000..baedae5
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_ratingbar_5.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_ratingbar_5_pressed.png b/tests/res/drawable-mdpi/holo_light_land_ratingbar_5_pressed.png
new file mode 100644
index 0000000..7bd94f0
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_ratingbar_5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_red_dark.png b/tests/res/drawable-mdpi/holo_light_land_red_dark.png
new file mode 100644
index 0000000..fd9aced
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_red_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_red_light.png b/tests/res/drawable-mdpi/holo_light_land_red_light.png
new file mode 100644
index 0000000..2555dc7
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_red_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_searchview.png b/tests/res/drawable-mdpi/holo_light_land_searchview.png
new file mode 100644
index 0000000..561dc26
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_searchview.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_searchview_query.png b/tests/res/drawable-mdpi/holo_light_land_searchview_query.png
new file mode 100644
index 0000000..35968cc
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_searchview_query.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_searchview_queryhint.png b/tests/res/drawable-mdpi/holo_light_land_searchview_queryhint.png
new file mode 100644
index 0000000..d36c8c9
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_searchview_queryhint.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_seekbar_0.png b/tests/res/drawable-mdpi/holo_light_land_seekbar_0.png
new file mode 100644
index 0000000..2ce5c4c
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_seekbar_0.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_seekbar_100.png b/tests/res/drawable-mdpi/holo_light_land_seekbar_100.png
new file mode 100644
index 0000000..1979fb4
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_seekbar_100.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_seekbar_50.png b/tests/res/drawable-mdpi/holo_light_land_seekbar_50.png
new file mode 100644
index 0000000..9e3aa7d
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_seekbar_50.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_spinner.png b/tests/res/drawable-mdpi/holo_light_land_spinner.png
new file mode 100644
index 0000000..a1761c0
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_spinner.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_tabhost.png b/tests/res/drawable-mdpi/holo_light_land_tabhost.png
new file mode 100644
index 0000000..8739702
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_tabhost.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_textview.png b/tests/res/drawable-mdpi/holo_light_land_textview.png
new file mode 100644
index 0000000..468f328
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_textview.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_toggle_button.png b/tests/res/drawable-mdpi/holo_light_land_toggle_button.png
new file mode 100644
index 0000000..9660382
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_toggle_button.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_toggle_button_checked.png b/tests/res/drawable-mdpi/holo_light_land_toggle_button_checked.png
new file mode 100644
index 0000000..0facd90
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_toggle_button_checked.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_land_zoomcontrols.png b/tests/res/drawable-mdpi/holo_light_land_zoomcontrols.png
new file mode 100644
index 0000000..7892bcf
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_land_zoomcontrols.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_actionbar.png b/tests/res/drawable-mdpi/holo_light_port_actionbar.png
new file mode 100644
index 0000000..0828481
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_actionbar.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_actionbar_action_items.png b/tests/res/drawable-mdpi/holo_light_port_actionbar_action_items.png
new file mode 100644
index 0000000..d3882c8
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_actionbar_action_items.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_actionbar_action_view.png b/tests/res/drawable-mdpi/holo_light_port_actionbar_action_view.png
new file mode 100644
index 0000000..9473190
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_actionbar_action_view.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_actionbar_home_as_up.png b/tests/res/drawable-mdpi/holo_light_port_actionbar_home_as_up.png
new file mode 100644
index 0000000..ce2ac08
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_actionbar_home_as_up.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_actionbar_list.png b/tests/res/drawable-mdpi/holo_light_port_actionbar_list.png
new file mode 100644
index 0000000..bcffdfb
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_actionbar_list.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_actionbar_no_icon.png b/tests/res/drawable-mdpi/holo_light_port_actionbar_no_icon.png
new file mode 100644
index 0000000..71520b9
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_actionbar_no_icon.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_actionbar_no_title.png b/tests/res/drawable-mdpi/holo_light_port_actionbar_no_title.png
new file mode 100644
index 0000000..2c876b2
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_actionbar_no_title.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_actionbar_tabs.png b/tests/res/drawable-mdpi/holo_light_port_actionbar_tabs.png
new file mode 100644
index 0000000..01d7f15
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_actionbar_tabs.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_alertdialog_list.png b/tests/res/drawable-mdpi/holo_light_port_alertdialog_list.png
new file mode 100644
index 0000000..b3791c4
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_alertdialog_list.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_alertdialog_multichoice.png b/tests/res/drawable-mdpi/holo_light_port_alertdialog_multichoice.png
new file mode 100644
index 0000000..702acac
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_alertdialog_multichoice.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_alertdialog_onebutton.png b/tests/res/drawable-mdpi/holo_light_port_alertdialog_onebutton.png
new file mode 100644
index 0000000..1eef9d0
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_alertdialog_onebutton.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_alertdialog_singlechoice.png b/tests/res/drawable-mdpi/holo_light_port_alertdialog_singlechoice.png
new file mode 100644
index 0000000..3150212
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_alertdialog_singlechoice.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_alertdialog_threebuttons.png b/tests/res/drawable-mdpi/holo_light_port_alertdialog_threebuttons.png
new file mode 100644
index 0000000..a5a74e0
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_alertdialog_threebuttons.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_alertdialog_twobuttons.png b/tests/res/drawable-mdpi/holo_light_port_alertdialog_twobuttons.png
new file mode 100644
index 0000000..26f4744
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_alertdialog_twobuttons.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_blue_bright.png b/tests/res/drawable-mdpi/holo_light_port_blue_bright.png
new file mode 100644
index 0000000..c310278
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_blue_bright.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_blue_dark.png b/tests/res/drawable-mdpi/holo_light_port_blue_dark.png
new file mode 100644
index 0000000..c08b66b6
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_blue_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_blue_light.png b/tests/res/drawable-mdpi/holo_light_port_blue_light.png
new file mode 100644
index 0000000..6c0f7ec
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_blue_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_button.png b/tests/res/drawable-mdpi/holo_light_port_button.png
new file mode 100644
index 0000000..98e6d5f
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_button.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_button_pressed.png b/tests/res/drawable-mdpi/holo_light_port_button_pressed.png
new file mode 100644
index 0000000..94c82b2
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_button_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_calendarview.png b/tests/res/drawable-mdpi/holo_light_port_calendarview.png
new file mode 100644
index 0000000..28ea91a
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_calendarview.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_checkbox.png b/tests/res/drawable-mdpi/holo_light_port_checkbox.png
new file mode 100644
index 0000000..b4d6daf
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_checkbox.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_checkbox_checked.png b/tests/res/drawable-mdpi/holo_light_port_checkbox_checked.png
new file mode 100644
index 0000000..5e27734
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_checkbox_checked.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_edittext.png b/tests/res/drawable-mdpi/holo_light_port_edittext.png
new file mode 100644
index 0000000..ec1112f
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_edittext.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_green_dark.png b/tests/res/drawable-mdpi/holo_light_port_green_dark.png
new file mode 100644
index 0000000..ff55a01
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_green_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_green_light.png b/tests/res/drawable-mdpi/holo_light_port_green_light.png
new file mode 100644
index 0000000..8e2a205
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_green_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_orange_dark.png b/tests/res/drawable-mdpi/holo_light_port_orange_dark.png
new file mode 100644
index 0000000..f2f3a6e
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_orange_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_orange_light.png b/tests/res/drawable-mdpi/holo_light_port_orange_light.png
new file mode 100644
index 0000000..64e8147
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_orange_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_progressbar.png b/tests/res/drawable-mdpi/holo_light_port_progressbar.png
new file mode 100644
index 0000000..e4dd24d
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_progressbar.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_progressbar_horizontal0.png b/tests/res/drawable-mdpi/holo_light_port_progressbar_horizontal0.png
new file mode 100644
index 0000000..9dcbbc9
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_progressbar_horizontal0.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_progressbar_horizontal100.png b/tests/res/drawable-mdpi/holo_light_port_progressbar_horizontal100.png
new file mode 100644
index 0000000..cf993dd
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_progressbar_horizontal100.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_progressbar_horizontal50.png b/tests/res/drawable-mdpi/holo_light_port_progressbar_horizontal50.png
new file mode 100644
index 0000000..345aa49
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_progressbar_horizontal50.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_progressbar_large.png b/tests/res/drawable-mdpi/holo_light_port_progressbar_large.png
new file mode 100644
index 0000000..a266699
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_progressbar_large.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_progressbar_small.png b/tests/res/drawable-mdpi/holo_light_port_progressbar_small.png
new file mode 100644
index 0000000..495c73a
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_progressbar_small.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_progressdialog_horizontal.png b/tests/res/drawable-mdpi/holo_light_port_progressdialog_horizontal.png
new file mode 100644
index 0000000..11bb468
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_progressdialog_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_progressdialog_spinner.png b/tests/res/drawable-mdpi/holo_light_port_progressdialog_spinner.png
new file mode 100644
index 0000000..8e29aad
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_progressdialog_spinner.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_purple.png b/tests/res/drawable-mdpi/holo_light_port_purple.png
new file mode 100644
index 0000000..93ca138
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_purple.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_radiobutton.png b/tests/res/drawable-mdpi/holo_light_port_radiobutton.png
new file mode 100644
index 0000000..9cb438e
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_radiobutton.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_radiobutton_checked.png b/tests/res/drawable-mdpi/holo_light_port_radiobutton_checked.png
new file mode 100644
index 0000000..2999134
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_radiobutton_checked.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_radiogroup_horizontal.png b/tests/res/drawable-mdpi/holo_light_port_radiogroup_horizontal.png
new file mode 100644
index 0000000..e67c2c9
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_radiogroup_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_radiogroup_vertical.png b/tests/res/drawable-mdpi/holo_light_port_radiogroup_vertical.png
new file mode 100644
index 0000000..889c0a4
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_radiogroup_vertical.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_ratingbar_0.png b/tests/res/drawable-mdpi/holo_light_port_ratingbar_0.png
new file mode 100644
index 0000000..cc8427c
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_ratingbar_0.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_ratingbar_0_pressed.png b/tests/res/drawable-mdpi/holo_light_port_ratingbar_0_pressed.png
new file mode 100644
index 0000000..48a3c69
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_ratingbar_0_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_ratingbar_2point5.png b/tests/res/drawable-mdpi/holo_light_port_ratingbar_2point5.png
new file mode 100644
index 0000000..fd0783b
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_ratingbar_2point5.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_ratingbar_2point5_pressed.png b/tests/res/drawable-mdpi/holo_light_port_ratingbar_2point5_pressed.png
new file mode 100644
index 0000000..f1c344c
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_ratingbar_2point5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_ratingbar_5.png b/tests/res/drawable-mdpi/holo_light_port_ratingbar_5.png
new file mode 100644
index 0000000..baedae5
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_ratingbar_5.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_ratingbar_5_pressed.png b/tests/res/drawable-mdpi/holo_light_port_ratingbar_5_pressed.png
new file mode 100644
index 0000000..7bd94f0
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_ratingbar_5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_red_dark.png b/tests/res/drawable-mdpi/holo_light_port_red_dark.png
new file mode 100644
index 0000000..dbd0e74
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_red_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_red_light.png b/tests/res/drawable-mdpi/holo_light_port_red_light.png
new file mode 100644
index 0000000..9af9d58
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_red_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_searchview.png b/tests/res/drawable-mdpi/holo_light_port_searchview.png
new file mode 100644
index 0000000..dc67ca3
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_searchview.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_searchview_query.png b/tests/res/drawable-mdpi/holo_light_port_searchview_query.png
new file mode 100644
index 0000000..36ccef9
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_searchview_query.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_searchview_queryhint.png b/tests/res/drawable-mdpi/holo_light_port_searchview_queryhint.png
new file mode 100644
index 0000000..bec1630
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_searchview_queryhint.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_seekbar_0.png b/tests/res/drawable-mdpi/holo_light_port_seekbar_0.png
new file mode 100644
index 0000000..0ea8968
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_seekbar_0.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_seekbar_100.png b/tests/res/drawable-mdpi/holo_light_port_seekbar_100.png
new file mode 100644
index 0000000..67552491
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_seekbar_100.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_seekbar_50.png b/tests/res/drawable-mdpi/holo_light_port_seekbar_50.png
new file mode 100644
index 0000000..a59d571
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_seekbar_50.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_spinner.png b/tests/res/drawable-mdpi/holo_light_port_spinner.png
new file mode 100644
index 0000000..9698eaf
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_spinner.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_tabhost.png b/tests/res/drawable-mdpi/holo_light_port_tabhost.png
new file mode 100644
index 0000000..3b1f999
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_tabhost.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_textview.png b/tests/res/drawable-mdpi/holo_light_port_textview.png
new file mode 100644
index 0000000..8a491d2
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_textview.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_toggle_button.png b/tests/res/drawable-mdpi/holo_light_port_toggle_button.png
new file mode 100644
index 0000000..9660382
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_toggle_button.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_toggle_button_checked.png b/tests/res/drawable-mdpi/holo_light_port_toggle_button_checked.png
new file mode 100644
index 0000000..0facd90
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_toggle_button_checked.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_light_port_zoomcontrols.png b/tests/res/drawable-mdpi/holo_light_port_zoomcontrols.png
new file mode 100644
index 0000000..7892bcf
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_light_port_zoomcontrols.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_actionbar.png b/tests/res/drawable-mdpi/holo_port_actionbar.png
new file mode 100644
index 0000000..196081a
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_actionbar.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_actionbar_action_items.png b/tests/res/drawable-mdpi/holo_port_actionbar_action_items.png
new file mode 100644
index 0000000..b6bcaa7
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_actionbar_action_items.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_actionbar_action_view.png b/tests/res/drawable-mdpi/holo_port_actionbar_action_view.png
new file mode 100644
index 0000000..acfb67e
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_actionbar_action_view.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_actionbar_home_as_up.png b/tests/res/drawable-mdpi/holo_port_actionbar_home_as_up.png
new file mode 100644
index 0000000..1b043e8
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_actionbar_home_as_up.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_actionbar_list.png b/tests/res/drawable-mdpi/holo_port_actionbar_list.png
new file mode 100644
index 0000000..8e9d231
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_actionbar_list.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_actionbar_no_icon.png b/tests/res/drawable-mdpi/holo_port_actionbar_no_icon.png
new file mode 100644
index 0000000..247c6d3
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_actionbar_no_icon.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_actionbar_no_title.png b/tests/res/drawable-mdpi/holo_port_actionbar_no_title.png
new file mode 100644
index 0000000..77f8034
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_actionbar_no_title.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_actionbar_tabs.png b/tests/res/drawable-mdpi/holo_port_actionbar_tabs.png
new file mode 100644
index 0000000..dba0980
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_actionbar_tabs.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_alertdialog_list.png b/tests/res/drawable-mdpi/holo_port_alertdialog_list.png
new file mode 100644
index 0000000..03b2e0f
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_alertdialog_list.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_alertdialog_multichoice.png b/tests/res/drawable-mdpi/holo_port_alertdialog_multichoice.png
new file mode 100644
index 0000000..0badbb7
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_alertdialog_multichoice.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_alertdialog_onebutton.png b/tests/res/drawable-mdpi/holo_port_alertdialog_onebutton.png
new file mode 100644
index 0000000..718ac43
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_alertdialog_onebutton.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_alertdialog_singlechoice.png b/tests/res/drawable-mdpi/holo_port_alertdialog_singlechoice.png
new file mode 100644
index 0000000..fa91e62
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_alertdialog_singlechoice.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_alertdialog_threebuttons.png b/tests/res/drawable-mdpi/holo_port_alertdialog_threebuttons.png
new file mode 100644
index 0000000..8cd9da8
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_alertdialog_threebuttons.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_alertdialog_twobuttons.png b/tests/res/drawable-mdpi/holo_port_alertdialog_twobuttons.png
new file mode 100644
index 0000000..55cc279
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_alertdialog_twobuttons.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_blue_bright.png b/tests/res/drawable-mdpi/holo_port_blue_bright.png
new file mode 100644
index 0000000..c310278
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_blue_bright.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_blue_dark.png b/tests/res/drawable-mdpi/holo_port_blue_dark.png
new file mode 100644
index 0000000..c08b66b6
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_blue_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_blue_light.png b/tests/res/drawable-mdpi/holo_port_blue_light.png
new file mode 100644
index 0000000..6c0f7ec
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_blue_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_button.png b/tests/res/drawable-mdpi/holo_port_button.png
new file mode 100644
index 0000000..25cfc2d
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_button.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_button_pressed.png b/tests/res/drawable-mdpi/holo_port_button_pressed.png
new file mode 100644
index 0000000..6b1e5d2
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_button_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_calendarview.png b/tests/res/drawable-mdpi/holo_port_calendarview.png
new file mode 100644
index 0000000..6595dbd
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_calendarview.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_checkbox.png b/tests/res/drawable-mdpi/holo_port_checkbox.png
new file mode 100644
index 0000000..1c8f6ed
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_checkbox.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_checkbox_checked.png b/tests/res/drawable-mdpi/holo_port_checkbox_checked.png
new file mode 100644
index 0000000..2df82f3
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_checkbox_checked.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_edittext.png b/tests/res/drawable-mdpi/holo_port_edittext.png
new file mode 100644
index 0000000..a47fc7d
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_edittext.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_green_dark.png b/tests/res/drawable-mdpi/holo_port_green_dark.png
new file mode 100644
index 0000000..ff55a01
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_green_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_green_light.png b/tests/res/drawable-mdpi/holo_port_green_light.png
new file mode 100644
index 0000000..8e2a205
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_green_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_orange_dark.png b/tests/res/drawable-mdpi/holo_port_orange_dark.png
new file mode 100644
index 0000000..f2f3a6e
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_orange_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_orange_light.png b/tests/res/drawable-mdpi/holo_port_orange_light.png
new file mode 100644
index 0000000..64e8147
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_orange_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_progressbar.png b/tests/res/drawable-mdpi/holo_port_progressbar.png
new file mode 100644
index 0000000..e4dd24d
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_progressbar.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_progressbar_horizontal0.png b/tests/res/drawable-mdpi/holo_port_progressbar_horizontal0.png
new file mode 100644
index 0000000..9dcbbc9
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_progressbar_horizontal0.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_progressbar_horizontal100.png b/tests/res/drawable-mdpi/holo_port_progressbar_horizontal100.png
new file mode 100644
index 0000000..cf993dd
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_progressbar_horizontal100.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_progressbar_horizontal50.png b/tests/res/drawable-mdpi/holo_port_progressbar_horizontal50.png
new file mode 100644
index 0000000..345aa49
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_progressbar_horizontal50.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_progressbar_large.png b/tests/res/drawable-mdpi/holo_port_progressbar_large.png
new file mode 100644
index 0000000..a266699
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_progressbar_large.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_progressbar_small.png b/tests/res/drawable-mdpi/holo_port_progressbar_small.png
new file mode 100644
index 0000000..495c73a
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_progressbar_small.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_progressdialog_horizontal.png b/tests/res/drawable-mdpi/holo_port_progressdialog_horizontal.png
new file mode 100644
index 0000000..225f008
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_progressdialog_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_progressdialog_spinner.png b/tests/res/drawable-mdpi/holo_port_progressdialog_spinner.png
new file mode 100644
index 0000000..93a399d
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_progressdialog_spinner.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_purple.png b/tests/res/drawable-mdpi/holo_port_purple.png
new file mode 100644
index 0000000..93ca138
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_purple.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_radiobutton.png b/tests/res/drawable-mdpi/holo_port_radiobutton.png
new file mode 100644
index 0000000..51d8b24
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_radiobutton.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_radiobutton_checked.png b/tests/res/drawable-mdpi/holo_port_radiobutton_checked.png
new file mode 100644
index 0000000..bde1275
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_radiobutton_checked.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_radiogroup_horizontal.png b/tests/res/drawable-mdpi/holo_port_radiogroup_horizontal.png
new file mode 100644
index 0000000..36ab0ba
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_radiogroup_horizontal.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_radiogroup_vertical.png b/tests/res/drawable-mdpi/holo_port_radiogroup_vertical.png
new file mode 100644
index 0000000..fa86a42
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_radiogroup_vertical.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_ratingbar_0.png b/tests/res/drawable-mdpi/holo_port_ratingbar_0.png
new file mode 100644
index 0000000..79ce56d
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_ratingbar_0.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_ratingbar_0_pressed.png b/tests/res/drawable-mdpi/holo_port_ratingbar_0_pressed.png
new file mode 100644
index 0000000..280f112
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_ratingbar_0_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_ratingbar_2point5.png b/tests/res/drawable-mdpi/holo_port_ratingbar_2point5.png
new file mode 100644
index 0000000..cef353c
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_ratingbar_2point5.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_ratingbar_2point5_pressed.png b/tests/res/drawable-mdpi/holo_port_ratingbar_2point5_pressed.png
new file mode 100644
index 0000000..43861f0
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_ratingbar_2point5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_ratingbar_5.png b/tests/res/drawable-mdpi/holo_port_ratingbar_5.png
new file mode 100644
index 0000000..c4dfb98
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_ratingbar_5.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_ratingbar_5_pressed.png b/tests/res/drawable-mdpi/holo_port_ratingbar_5_pressed.png
new file mode 100644
index 0000000..21394c0
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_ratingbar_5_pressed.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_red_dark.png b/tests/res/drawable-mdpi/holo_port_red_dark.png
new file mode 100644
index 0000000..dbd0e74
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_red_dark.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_red_light.png b/tests/res/drawable-mdpi/holo_port_red_light.png
new file mode 100644
index 0000000..9af9d58
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_red_light.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_searchview.png b/tests/res/drawable-mdpi/holo_port_searchview.png
new file mode 100644
index 0000000..b673bef
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_searchview.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_searchview_query.png b/tests/res/drawable-mdpi/holo_port_searchview_query.png
new file mode 100644
index 0000000..de6e974
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_searchview_query.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_searchview_queryhint.png b/tests/res/drawable-mdpi/holo_port_searchview_queryhint.png
new file mode 100644
index 0000000..e68faf0
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_searchview_queryhint.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_seekbar_0.png b/tests/res/drawable-mdpi/holo_port_seekbar_0.png
new file mode 100644
index 0000000..44648da
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_seekbar_0.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_seekbar_100.png b/tests/res/drawable-mdpi/holo_port_seekbar_100.png
new file mode 100644
index 0000000..67552491
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_seekbar_100.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_seekbar_50.png b/tests/res/drawable-mdpi/holo_port_seekbar_50.png
new file mode 100644
index 0000000..1767fd0
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_seekbar_50.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_spinner.png b/tests/res/drawable-mdpi/holo_port_spinner.png
new file mode 100644
index 0000000..26fe0f0
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_spinner.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_tabhost.png b/tests/res/drawable-mdpi/holo_port_tabhost.png
new file mode 100644
index 0000000..3b1f999
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_tabhost.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_textview.png b/tests/res/drawable-mdpi/holo_port_textview.png
new file mode 100644
index 0000000..50b2487
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_textview.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_toggle_button.png b/tests/res/drawable-mdpi/holo_port_toggle_button.png
new file mode 100644
index 0000000..1efa0d2
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_toggle_button.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_toggle_button_checked.png b/tests/res/drawable-mdpi/holo_port_toggle_button_checked.png
new file mode 100644
index 0000000..b63a5cc
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_toggle_button_checked.png
Binary files differ
diff --git a/tests/res/drawable-mdpi/holo_port_zoomcontrols.png b/tests/res/drawable-mdpi/holo_port_zoomcontrols.png
new file mode 100644
index 0000000..7892bcf
--- /dev/null
+++ b/tests/res/drawable-mdpi/holo_port_zoomcontrols.png
Binary files differ
diff --git a/tests/res/layout/blue_bright.xml b/tests/res/layout/blue_bright.xml
new file mode 100644
index 0000000..b2ea8aa
--- /dev/null
+++ b/tests/res/layout/blue_bright.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <TextView android:id="@+id/textView1"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="@string/sample_text"
+              android:textColor="@android:color/holo_blue_bright"
+              xmlns:android="http://schemas.android.com/apk/res/android">
+    </TextView>
diff --git a/tests/res/layout/blue_dark.xml b/tests/res/layout/blue_dark.xml
new file mode 100644
index 0000000..1c0860b
--- /dev/null
+++ b/tests/res/layout/blue_dark.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <TextView android:id="@+id/textView1"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="@string/sample_text"
+              android:textColor="@android:color/holo_blue_dark"
+              xmlns:android="http://schemas.android.com/apk/res/android">
+    </TextView>
diff --git a/tests/res/layout/blue_light.xml b/tests/res/layout/blue_light.xml
new file mode 100644
index 0000000..849e4ab
--- /dev/null
+++ b/tests/res/layout/blue_light.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <TextView android:id="@+id/textView1"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="@string/sample_text"
+              android:textColor="@android:color/holo_blue_light"
+              xmlns:android="http://schemas.android.com/apk/res/android">
+    </TextView>
diff --git a/tests/res/layout/button.xml b/tests/res/layout/button.xml
new file mode 100644
index 0000000..ea0aec9
--- /dev/null
+++ b/tests/res/layout/button.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <Button xmlns:android="http://schemas.android.com/apk/res/android"
+            android:text="@string/button"
+            android:id="@+id/button"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content">
+    </Button>
diff --git a/tests/res/layout/calendarview.xml b/tests/res/layout/calendarview.xml
new file mode 100644
index 0000000..2a2303e
--- /dev/null
+++ b/tests/res/layout/calendarview.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <CalendarView android:id="@+id/calendarView1"
+                  android:layout_width="match_parent"
+                  android:layout_height="match_parent"
+                  xmlns:android="http://schemas.android.com/apk/res/android">
+    </CalendarView>
diff --git a/tests/res/layout/checkbox.xml b/tests/res/layout/checkbox.xml
new file mode 100644
index 0000000..3fc6b17
--- /dev/null
+++ b/tests/res/layout/checkbox.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
+              android:id="@+id/checkBox1"
+              android:text="CheckBox"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content">
+    </CheckBox>
diff --git a/tests/res/layout/checkbox_checked.xml b/tests/res/layout/checkbox_checked.xml
new file mode 100644
index 0000000..e1d8c02
--- /dev/null
+++ b/tests/res/layout/checkbox_checked.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <CheckBox xmlns:android="http://schemas.android.com/apk/res/android"
+              android:checked="true"
+              android:id="@+id/checkBox1"
+              android:text="CheckBox"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content">
+    </CheckBox>
diff --git a/tests/res/layout/datepicker.xml b/tests/res/layout/datepicker.xml
new file mode 100644
index 0000000..6a7b51c
--- /dev/null
+++ b/tests/res/layout/datepicker.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <DatePicker android:id="@+id/datePicker1"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:spinnersShown="false"
+                xmlns:android="http://schemas.android.com/apk/res/android">
+    </DatePicker>
diff --git a/tests/res/layout/edittext.xml b/tests/res/layout/edittext.xml
new file mode 100644
index 0000000..cd19470
--- /dev/null
+++ b/tests/res/layout/edittext.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <EditText android:id="@+id/editText1"
+              android:layout_width="match_parent"
+              android:layout_height="wrap_content"
+              xmlns:android="http://schemas.android.com/apk/res/android">
+    </EditText>
diff --git a/tests/res/layout/empty.xml b/tests/res/layout/empty.xml
new file mode 100644
index 0000000..b7f4e63
--- /dev/null
+++ b/tests/res/layout/empty.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <FrameLayout android:id="@+id/frameLayout1"
+        android:layout_width="0dip"
+        android:layout_height="0dip"
+        xmlns:android="http://schemas.android.com/apk/res/android">
+    </FrameLayout>
diff --git a/tests/res/layout/green_dark.xml b/tests/res/layout/green_dark.xml
new file mode 100644
index 0000000..f71edb8
--- /dev/null
+++ b/tests/res/layout/green_dark.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <TextView android:id="@+id/textView1"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="@string/sample_text"
+              android:textColor="@android:color/holo_green_dark"
+              xmlns:android="http://schemas.android.com/apk/res/android">
+    </TextView>
diff --git a/tests/res/layout/green_light.xml b/tests/res/layout/green_light.xml
new file mode 100644
index 0000000..65bdfe5
--- /dev/null
+++ b/tests/res/layout/green_light.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <TextView android:id="@+id/textView1"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="@string/sample_text"
+              android:textColor="@android:color/holo_green_light"
+              xmlns:android="http://schemas.android.com/apk/res/android">
+    </TextView>
diff --git a/tests/res/layout/home_activity.xml b/tests/res/layout/home_activity.xml
new file mode 100644
index 0000000..49174da
--- /dev/null
+++ b/tests/res/layout/home_activity.xml
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+              android:orientation="vertical"
+              android:layout_width="match_parent"
+              android:layout_height="match_parent">
+      <Button android:text="@string/holo_test"
+              android:id="@+id/button_holo"
+              android:onClick="onHoloTestClick"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content">
+      </Button>
+      <Button android:text="@string/holo_generator"
+              android:id="@+id/button2"
+              android:onClick="onHoloGenClick"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content">
+      </Button>
+      <Button android:text="@string/holo_light_test"
+              android:id="@+id/button3"
+              android:onClick="onHoloLightTestClick"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content">
+      </Button>
+      <Button android:text="@string/holo_light_generator"
+              android:id="@+id/button4"
+              android:onClick="onHoloLightGenClick"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content">
+      </Button>
+</LinearLayout>
diff --git a/tests/res/layout/mediaplayer.xml b/tests/res/layout/mediaplayer.xml
index 31ef492..aa66e64 100644
--- a/tests/res/layout/mediaplayer.xml
+++ b/tests/res/layout/mediaplayer.xml
@@ -25,4 +25,16 @@
         android:layout_gravity="center">
     </SurfaceView>
 
+    <SurfaceView android:id="@+id/surface2"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center">
+    </SurfaceView>
+
+    <SurfaceView android:id="@+id/surface3"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center">
+    </SurfaceView>
+
 </LinearLayout>
diff --git a/tests/res/layout/orange_dark.xml b/tests/res/layout/orange_dark.xml
new file mode 100644
index 0000000..3bed6ce
--- /dev/null
+++ b/tests/res/layout/orange_dark.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <TextView android:id="@+id/textView1"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="@string/sample_text"
+              android:textColor="@android:color/holo_orange_dark"
+              xmlns:android="http://schemas.android.com/apk/res/android">
+    </TextView>
diff --git a/tests/res/layout/orange_light.xml b/tests/res/layout/orange_light.xml
new file mode 100644
index 0000000..f4e4724
--- /dev/null
+++ b/tests/res/layout/orange_light.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <TextView android:id="@+id/textView1"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="@string/sample_text"
+              android:textColor="@android:color/holo_orange_light"
+              xmlns:android="http://schemas.android.com/apk/res/android">
+    </TextView>
diff --git a/tests/res/layout/progressbar.xml b/tests/res/layout/progressbar.xml
new file mode 100644
index 0000000..e54b4b0
--- /dev/null
+++ b/tests/res/layout/progressbar.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
+                 android:id="@+id/progressBar1"
+                 android:layout_width="wrap_content"
+                 android:layout_height="wrap_content">
+    </ProgressBar>
diff --git a/tests/res/layout/progressbar_horizontal0.xml b/tests/res/layout/progressbar_horizontal0.xml
new file mode 100644
index 0000000..f946b7a
--- /dev/null
+++ b/tests/res/layout/progressbar_horizontal0.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <ProgressBar android:id="@+id/progressBar1"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    style="?android:attr/progressBarStyleHorizontal"
+    android:max="100"
+    android:progress="0"
+    xmlns:android="http://schemas.android.com/apk/res/android"></ProgressBar>
diff --git a/tests/res/layout/progressbar_horizontal100.xml b/tests/res/layout/progressbar_horizontal100.xml
new file mode 100644
index 0000000..034cc83
--- /dev/null
+++ b/tests/res/layout/progressbar_horizontal100.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <ProgressBar android:id="@+id/progressBar1"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    style="?android:attr/progressBarStyleHorizontal"
+    android:max="100"
+    android:progress="100"
+    xmlns:android="http://schemas.android.com/apk/res/android"></ProgressBar>
diff --git a/tests/res/layout/progressbar_horizontal50.xml b/tests/res/layout/progressbar_horizontal50.xml
new file mode 100644
index 0000000..0c093ae
--- /dev/null
+++ b/tests/res/layout/progressbar_horizontal50.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <ProgressBar android:id="@+id/progressBar1"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    style="?android:attr/progressBarStyleHorizontal"
+    android:max="100"
+    android:progress="50"
+    xmlns:android="http://schemas.android.com/apk/res/android"></ProgressBar>
diff --git a/tests/res/layout/progressbar_large.xml b/tests/res/layout/progressbar_large.xml
new file mode 100644
index 0000000..9eb26ad
--- /dev/null
+++ b/tests/res/layout/progressbar_large.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
+                 android:id="@+id/progressBar1"
+                 style="?android:attr/progressBarStyleLarge"
+                 android:layout_width="wrap_content"
+                 android:layout_height="wrap_content">
+    </ProgressBar>
diff --git a/tests/res/layout/progressbar_small.xml b/tests/res/layout/progressbar_small.xml
new file mode 100644
index 0000000..ae2b561
--- /dev/null
+++ b/tests/res/layout/progressbar_small.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <ProgressBar xmlns:android="http://schemas.android.com/apk/res/android"
+                 android:id="@+id/progressBar1"
+                 style="?android:attr/progressBarStyleSmall"
+                 android:layout_width="wrap_content"
+                 android:layout_height="wrap_content">
+    </ProgressBar>
diff --git a/tests/res/layout/purple.xml b/tests/res/layout/purple.xml
new file mode 100644
index 0000000..507c485
--- /dev/null
+++ b/tests/res/layout/purple.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <TextView android:id="@+id/textView1"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="@string/sample_text"
+              android:textColor="@android:color/holo_purple"
+              xmlns:android="http://schemas.android.com/apk/res/android">
+    </TextView>
diff --git a/tests/res/layout/radiobutton.xml b/tests/res/layout/radiobutton.xml
new file mode 100644
index 0000000..6b832bf
--- /dev/null
+++ b/tests/res/layout/radiobutton.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
+                 android:id="@+id/radioButton1"
+                 android:text="RadioButton"
+                 android:layout_width="wrap_content"
+                 android:layout_height="wrap_content">
+    </RadioButton>
diff --git a/tests/res/layout/radiobutton_checked.xml b/tests/res/layout/radiobutton_checked.xml
new file mode 100644
index 0000000..8f76f6a
--- /dev/null
+++ b/tests/res/layout/radiobutton_checked.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
+                 android:id="@+id/radioButton1"
+                 android:checked="true"
+                 android:text="RadioButton"
+                 android:layout_width="wrap_content"
+                 android:layout_height="wrap_content">
+    </RadioButton>
diff --git a/tests/res/layout/radiogroup_horizontal.xml b/tests/res/layout/radiogroup_horizontal.xml
new file mode 100644
index 0000000..32cfc8a
--- /dev/null
+++ b/tests/res/layout/radiogroup_horizontal.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <RadioGroup android:id="@+id/radioGroup1"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:orientation="horizontal"
+                xmlns:android="http://schemas.android.com/apk/res/android">
+      <RadioButton android:id="@+id/radio_red"
+                   android:layout_width="wrap_content"
+                   android:layout_height="wrap_content"
+                   android:text="Red" />
+      <RadioButton android:id="@+id/radio_blue"
+                   android:layout_width="wrap_content"
+                   android:layout_height="wrap_content"
+                   android:text="Blue" />
+    </RadioGroup>
diff --git a/tests/res/layout/radiogroup_vertical.xml b/tests/res/layout/radiogroup_vertical.xml
new file mode 100644
index 0000000..71987d7
--- /dev/null
+++ b/tests/res/layout/radiogroup_vertical.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <RadioGroup android:id="@+id/radioGroup1"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                xmlns:android="http://schemas.android.com/apk/res/android">
+      <RadioButton android:id="@+id/radio_red"
+                   android:layout_width="wrap_content"
+                   android:layout_height="wrap_content"
+                   android:text="Red" />
+      <RadioButton android:id="@+id/radio_blue"
+                   android:layout_width="wrap_content"
+                   android:layout_height="wrap_content"
+                   android:text="Blue" />
+    </RadioGroup>
diff --git a/tests/res/layout/ratingbar_0.xml b/tests/res/layout/ratingbar_0.xml
new file mode 100644
index 0000000..232a573
--- /dev/null
+++ b/tests/res/layout/ratingbar_0.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <RatingBar android:id="@+id/ratingBar1"
+               android:layout_width="wrap_content"
+               android:layout_height="wrap_content"
+               android:numStars="5"
+               android:rating="0"
+               xmlns:android="http://schemas.android.com/apk/res/android">
+    </RatingBar>
diff --git a/tests/res/layout/ratingbar_2point5.xml b/tests/res/layout/ratingbar_2point5.xml
new file mode 100644
index 0000000..e5e9dbe
--- /dev/null
+++ b/tests/res/layout/ratingbar_2point5.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <RatingBar android:id="@+id/ratingBar1"
+               android:layout_width="wrap_content"
+               android:layout_height="wrap_content"
+               android:numStars="5"
+               android:rating="2.5"
+               xmlns:android="http://schemas.android.com/apk/res/android">
+    </RatingBar>
diff --git a/tests/res/layout/ratingbar_5.xml b/tests/res/layout/ratingbar_5.xml
new file mode 100644
index 0000000..4169a53
--- /dev/null
+++ b/tests/res/layout/ratingbar_5.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <RatingBar android:id="@+id/ratingBar1"
+               android:layout_width="wrap_content"
+               android:layout_height="wrap_content"
+               android:numStars="5"
+               android:rating="5"
+               xmlns:android="http://schemas.android.com/apk/res/android">
+    </RatingBar>
diff --git a/tests/res/layout/red_dark.xml b/tests/res/layout/red_dark.xml
new file mode 100644
index 0000000..9a7b0bc
--- /dev/null
+++ b/tests/res/layout/red_dark.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <TextView android:id="@+id/textView1"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="@string/sample_text"
+              android:textColor="@android:color/holo_red_dark"
+              xmlns:android="http://schemas.android.com/apk/res/android">
+    </TextView>
diff --git a/tests/res/layout/red_light.xml b/tests/res/layout/red_light.xml
new file mode 100644
index 0000000..469751d
--- /dev/null
+++ b/tests/res/layout/red_light.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <TextView android:id="@+id/textView1"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="@string/sample_text"
+              android:textColor="@android:color/holo_red_light"
+              xmlns:android="http://schemas.android.com/apk/res/android">
+    </TextView>
diff --git a/tests/res/layout/searchview.xml b/tests/res/layout/searchview.xml
new file mode 100644
index 0000000..dba105a
--- /dev/null
+++ b/tests/res/layout/searchview.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <SearchView android:id="@+id/searchView1"
+                android:layout_width="fill_parent"
+                android:layout_height="fill_parent"
+                xmlns:android="http://schemas.android.com/apk/res/android">
+    </SearchView>
diff --git a/tests/res/layout/seekbar_0.xml b/tests/res/layout/seekbar_0.xml
new file mode 100644
index 0000000..bac53e2
--- /dev/null
+++ b/tests/res/layout/seekbar_0.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <SeekBar xmlns:android="http://schemas.android.com/apk/res/android"
+             android:id="@+id/seekBar1"
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content"
+             android:max="100"
+             android:progress="0">
+    </SeekBar>
diff --git a/tests/res/layout/seekbar_100.xml b/tests/res/layout/seekbar_100.xml
new file mode 100644
index 0000000..9114ac0
--- /dev/null
+++ b/tests/res/layout/seekbar_100.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <SeekBar xmlns:android="http://schemas.android.com/apk/res/android"
+             android:id="@+id/seekBar1"
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content"
+             android:max="100"
+             android:progress="100">
+    </SeekBar>
diff --git a/tests/res/layout/seekbar_50.xml b/tests/res/layout/seekbar_50.xml
new file mode 100644
index 0000000..f10d4ee
--- /dev/null
+++ b/tests/res/layout/seekbar_50.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <SeekBar xmlns:android="http://schemas.android.com/apk/res/android"
+             android:id="@+id/seekBar1"
+             android:layout_width="match_parent"
+             android:layout_height="wrap_content"
+             android:max="100"
+             android:progress="50">
+    </SeekBar>
diff --git a/tests/res/layout/spinner.xml b/tests/res/layout/spinner.xml
new file mode 100644
index 0000000..d0b453f
--- /dev/null
+++ b/tests/res/layout/spinner.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <Spinner xmlns:android="http://schemas.android.com/apk/res/android"
+             android:id="@+id/spinner1"
+             android:prompt="@string/themes_prompt"
+             android:entries="@array/themes_array"
+             android:layout_width="wrap_content"
+             android:layout_height="wrap_content">
+    </Spinner>
diff --git a/tests/res/layout/tabhost.xml b/tests/res/layout/tabhost.xml
new file mode 100644
index 0000000..ab3a55c
--- /dev/null
+++ b/tests/res/layout/tabhost.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <TabHost android:id="@+id/tabHost1"
+             android:layout_width="fill_parent"
+             android:layout_height="fill_parent"
+             xmlns:android="http://schemas.android.com/apk/res/android">
+        <LinearLayout
+            android:orientation="vertical"
+            android:layout_width="fill_parent"
+            android:layout_height="fill_parent"
+            android:padding="5dp">
+            <TabWidget
+                android:id="@android:id/tabs"
+                android:layout_width="fill_parent"
+                android:layout_height="wrap_content" />
+            <FrameLayout
+                android:id="@android:id/tabcontent"
+                android:layout_width="fill_parent"
+                android:layout_height="fill_parent"
+                android:padding="5dp">
+                <LinearLayout android:id="@+id/tabInnerView"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content">
+                </LinearLayout>
+            </FrameLayout>
+        </LinearLayout>
+    </TabHost>
diff --git a/tests/res/layout/testing_activity.xml b/tests/res/layout/testing_activity.xml
new file mode 100644
index 0000000..8b9a47a
--- /dev/null
+++ b/tests/res/layout/testing_activity.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent">
+    <TextView android:id="@+id/text"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content">
+    </TextView>
+    <TextView android:id="@+id/text_reference"
+              android:text="@string/reference_image"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:layout_below="@+id/text">
+    </TextView>
+    <ImageView android:id="@+id/reference_image"
+               android:layout_width="wrap_content"
+               android:layout_height="wrap_content"
+               android:layout_toRightOf="@+id/text_reference"
+               android:layout_below="@+id/text"/>
+    <TextView android:id="@+id/text_generated"
+              android:text="@string/generated_image"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:layout_toLeftOf="@+id/generated_image"
+              android:layout_alignTop="@+id/generated_image">
+    </TextView>
+    <ImageView android:id="@+id/generated_image"
+               android:layout_width="wrap_content"
+               android:layout_height="wrap_content"
+               android:layout_below="@+id/reference_image"
+               android:layout_alignLeft="@+id/reference_image"/>
+    <android.theme.cts.TesterViewGroup android:id="@+id/test_group"
+                                       android:layout_width="wrap_content"
+                                       android:layout_height="wrap_content"
+                                       android:layout_below="@+id/generated_image"/>
+</RelativeLayout>
diff --git a/tests/res/layout/textview.xml b/tests/res/layout/textview.xml
new file mode 100644
index 0000000..41fd0df
--- /dev/null
+++ b/tests/res/layout/textview.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <TextView android:id="@+id/textView1"
+              android:layout_width="wrap_content"
+              android:layout_height="wrap_content"
+              android:text="@string/sample_text"
+              xmlns:android="http://schemas.android.com/apk/res/android">
+    </TextView>
diff --git a/tests/res/layout/themetestlistactivity.xml b/tests/res/layout/themetestlistactivity.xml
new file mode 100644
index 0000000..beb7f8c
--- /dev/null
+++ b/tests/res/layout/themetestlistactivity.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <ListView android:id="@+id/tests_list"
+              android:layout_width="fill_parent"
+              android:layout_height="fill_parent"
+              xmlns:android="http://schemas.android.com/apk/res/android">
+    </ListView>
diff --git a/tests/res/layout/toggle_button.xml b/tests/res/layout/toggle_button.xml
new file mode 100644
index 0000000..87104f2
--- /dev/null
+++ b/tests/res/layout/toggle_button.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <ToggleButton xmlns:android="http://schemas.android.com/apk/res/android"
+                  android:id="@+id/toggleButton1"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content">
+    </ToggleButton>
diff --git a/tests/res/layout/toggle_button_checked.xml b/tests/res/layout/toggle_button_checked.xml
new file mode 100644
index 0000000..5832f4c
--- /dev/null
+++ b/tests/res/layout/toggle_button_checked.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+    <ToggleButton xmlns:android="http://schemas.android.com/apk/res/android"
+                  android:id="@+id/toggleButton1"
+                  android:checked="true"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content">
+    </ToggleButton>
diff --git a/tests/res/layout/zoomcontrols.xml b/tests/res/layout/zoomcontrols.xml
new file mode 100644
index 0000000..f4acc6e
--- /dev/null
+++ b/tests/res/layout/zoomcontrols.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+    <ZoomControls android:id="@+id/zoomControls1"
+                  android:layout_width="wrap_content"
+                  android:layout_height="wrap_content"
+                  xmlns:android="http://schemas.android.com/apk/res/android">
+    </ZoomControls>
diff --git a/tests/res/menu/menu_searchview.xml b/tests/res/menu/menu_searchview.xml
new file mode 100644
index 0000000..d9f6475
--- /dev/null
+++ b/tests/res/menu/menu_searchview.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+
+<menu xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:id="@+id/menu_search"
+        android:title="Search"
+        android:icon="@android:drawable/ic_menu_search"
+        android:showAsAction="ifRoom"
+        android:actionLayout="@layout/searchview" />
+</menu>
\ No newline at end of file
diff --git a/tests/res/values-land/dimens.xml b/tests/res/values-land/dimens.xml
new file mode 100644
index 0000000..88220fa
--- /dev/null
+++ b/tests/res/values-land/dimens.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+
+<resources>
+    <dimen name="reference_width">480dp</dimen>
+    <dimen name="reference_height">320dp</dimen>
+</resources>
diff --git a/tests/res/values-sw600dp-land/dimens.xml b/tests/res/values-sw600dp-land/dimens.xml
new file mode 100644
index 0000000..1b1c95e
--- /dev/null
+++ b/tests/res/values-sw600dp-land/dimens.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+
+<resources>
+    <dimen name="reference_width">1024dip</dimen>
+    <dimen name="reference_height">600dip</dimen>
+</resources>
diff --git a/tests/res/values-sw600dp/dimens.xml b/tests/res/values-sw600dp/dimens.xml
new file mode 100644
index 0000000..ab7b464
--- /dev/null
+++ b/tests/res/values-sw600dp/dimens.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ * Copyright (C) 2011 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.
+ -->
+
+<resources>
+    <dimen name="reference_width">600dp</dimen>
+    <dimen name="reference_height">1024dp</dimen>
+</resources>
diff --git a/tests/res/values/arrays.xml b/tests/res/values/arrays.xml
index 71e0133..af4c129 100644
--- a/tests/res/values/arrays.xml
+++ b/tests/res/values/arrays.xml
@@ -54,4 +54,16 @@
         <item>9</item>
         <item>10</item>
     </integer-array>
+
+    <string-array name="themes_array">
+        <item>holo</item>
+        <item>holo_light</item>
+        <item>holo_solidactionbar</item>
+        <item>holo_light_solidactionbar</item>
+        <item>holo_light_solidactionbar_inverse</item>
+        <item>holo_solidactionbar_splitactionbarwhennarrow</item>
+        <item>holo_light_solidactionbar_splitactionbarwhennarrow</item>
+        <item>holo_noactionbar</item>
+        <item>holo_light_noactionbar</item>
+    </string-array>
 </resources>
diff --git a/tests/res/values/dimens.xml b/tests/res/values/dimens.xml
index 2a8f76e..f0c57c2 100755
--- a/tests/res/values/dimens.xml
+++ b/tests/res/values/dimens.xml
@@ -38,6 +38,9 @@
     <item name="frac25510pperc" type="dimen" format="fraction">25510%p</item>
     <item name="frac25610pperc" type="dimen" format="fraction">25610%p</item>
     <item name="frac6553510pperc" type="dimen" format="fraction">6553510%p</item>
-    <item name="frac6553610pperc" type="dimen" format="fraction">6553610%p</item> 
+    <item name="frac6553610pperc" type="dimen" format="fraction">6553610%p</item>
+
+    <dimen name="reference_width">320dp</dimen>
+    <dimen name="reference_height">480dp</dimen>
 </resources>
 
diff --git a/tests/res/values/strings.xml b/tests/res/values/strings.xml
index 8fcd75a..b6bc0b5 100644
--- a/tests/res/values/strings.xml
+++ b/tests/res/values/strings.xml
@@ -151,4 +151,15 @@
    <string name="version_v3">base</string>
    <string name="authenticator_label">Android CTS</string>
    <string name="search_label">Android CTS</string>
+
+   <string name="button">Button</string>
+   <string name="holo_test">Holo Test</string>
+   <string name="holo_generator">Holo Generator</string>
+   <string name="holo_light_test">Holo Light Test</string>
+   <string name="holo_light_generator">Holo Light Generator</string>
+   <string name="reference_image">Reference Image: </string>
+   <string name="generated_image">Generated Image: </string>
+   <string name="themes_prompt">Select a Theme:</string>
+   <string name="sample_text">Sample text goes here. I wanted something creative and whimsical
+but then I just got bored...</string>
 </resources>
diff --git a/tests/src/android/media/cts/MediaStubActivity.java b/tests/src/android/media/cts/MediaStubActivity.java
index e10e6fa..f0ca755 100644
--- a/tests/src/android/media/cts/MediaStubActivity.java
+++ b/tests/src/android/media/cts/MediaStubActivity.java
@@ -26,6 +26,7 @@
     public static final int WIDTH = 320;
     public static final int HEIGHT = 240;
     private SurfaceHolder mHolder;
+    private SurfaceHolder mHolder2;
 
     @Override
     protected void onCreate(Bundle savedInstanceState) {
@@ -40,9 +41,28 @@
         mHolder = surfaceV.getHolder();
         mHolder.setFixedSize(WIDTH, HEIGHT);
         mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
+
+        SurfaceView surfaceV2 = (SurfaceView)findViewById(R.id.surface2);
+        ViewGroup.LayoutParams lp2 = surfaceV2.getLayoutParams();
+        lp2.width = WIDTH;
+        lp2.height = HEIGHT;
+        surfaceV2.setLayoutParams(lp2);
+        mHolder2 = surfaceV2.getHolder();
+        mHolder2.setFixedSize(WIDTH, HEIGHT);
+        mHolder2.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
+
     }
 
     public SurfaceHolder getSurfaceHolder() {
         return mHolder;
     }
+
+    public SurfaceHolder getSurfaceHolder2() {
+        return mHolder2;
+    }
+
+    public SurfaceHolder generateSurfaceHolder() {
+        SurfaceView surface = (SurfaceView)findViewById(R.id.surface3);
+        return surface.getHolder();
+    }
 }
diff --git a/tests/src/android/opengl/cts/GLSurfaceViewStubActivity.java b/tests/src/android/opengl/cts/GLSurfaceViewStubActivity.java
index 5a8f310..79da413 100644
--- a/tests/src/android/opengl/cts/GLSurfaceViewStubActivity.java
+++ b/tests/src/android/opengl/cts/GLSurfaceViewStubActivity.java
@@ -25,6 +25,7 @@
 
 /**
  * A minimal activity for testing {@link android.opengl.GLSurfaceView}.
+ * Also accepts non-blank renderers to allow its use for more complex tests.
  */
 public class GLSurfaceViewStubActivity extends Activity {
 
@@ -45,11 +46,60 @@
 
     private GLSurfaceView mView;
 
+    /** To override the blank renderer, or other settings, these
+     * static set* methods must be called before onCreate() is called.
+     * If using ActivityInstrumentationTestCase2, that means the set
+     * methods need to be called before calling getActivity in the
+     * test setUp().
+     */
+    private static GLSurfaceView.Renderer mRenderer = null;
+    public static void setRenderer(GLSurfaceView.Renderer renderer) {
+        mRenderer = renderer;
+    }
+    public static void resetRenderer() {
+        mRenderer = null;
+    }
+
+    private static int mRenderMode = 0;
+    private static boolean mRenderModeSet = false;
+    public static void setRenderMode(int renderMode) {
+        mRenderModeSet = true;
+        mRenderMode = renderMode;
+    }
+    public static void resetRenderMode() {
+        mRenderModeSet = false;
+        mRenderMode = 0;
+    }
+
+    private static int mGlVersion = 0;
+    private static boolean mGlVersionSet = false;
+    public static void setGlVersion(int glVersion) {
+        mGlVersionSet = true;
+        mGlVersion = glVersion;
+    }
+    public static void resetGlVersion() {
+        mGlVersionSet = false;
+        mGlVersion = 0;
+    }
+
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         mView = new GLSurfaceView(this);
-        mView.setRenderer(new Renderer());
+        // Only set this if explicitly asked for
+        if (mGlVersionSet) {
+            mView.setEGLContextClientVersion(mGlVersion);
+        }
+        // Use no-op renderer by default
+        if (mRenderer == null) {
+            mView.setRenderer(new Renderer());
+        } else {
+            mView.setRenderer(mRenderer);
+        }
+        // Only set this if explicitly asked for
+        if (mRenderModeSet) {
+            mView.setRenderMode(mRenderMode);
+        }
         setContentView(mView);
     }
 
diff --git a/tests/src/android/provider/cts/MediaStoreAudioTestHelper.java b/tests/src/android/provider/cts/MediaStoreAudioTestHelper.java
index e6c9809..7bcd0c7 100644
--- a/tests/src/android/provider/cts/MediaStoreAudioTestHelper.java
+++ b/tests/src/android/provider/cts/MediaStoreAudioTestHelper.java
@@ -84,6 +84,8 @@
 
         public static final int IS_MUSIC = 1;
 
+        public static final int IS_DRM = 0;
+
         public static final int YEAR = 1992;
 
         public static final int TRACK = 1;
@@ -134,6 +136,7 @@
             values.put(Media.IS_ALARM, IS_ALARM);
             values.put(Media.IS_NOTIFICATION, IS_NOTIFICATION);
             values.put(Media.IS_RINGTONE, IS_RINGTONE);
+            values.put(Media.IS_DRM, IS_DRM);
 
             return values;
         }
@@ -157,6 +160,8 @@
 
         public static final int IS_MUSIC = 0;
 
+        public static final int IS_DRM = 0;
+
         public static final int YEAR = 1992;
 
         public static final int TRACK = 1001;
@@ -210,6 +215,7 @@
             values.put(Media.IS_ALARM, IS_ALARM);
             values.put(Media.IS_NOTIFICATION, IS_NOTIFICATION);
             values.put(Media.IS_RINGTONE, IS_RINGTONE);
+            values.put(Media.IS_DRM, IS_DRM);
 
             return values;
         }
diff --git a/tests/src/android/renderscript/cts/fe_bool.rs b/tests/src/android/renderscript/cts/fe_bool.rs
new file mode 100644
index 0000000..727635a
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_bool.rs
@@ -0,0 +1,7 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const bool *ain, bool *aout) {
+    aout[0] = !ain[0];
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_f32.rs b/tests/src/android/renderscript/cts/fe_f32.rs
new file mode 100644
index 0000000..3c649e2
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_f32.rs
@@ -0,0 +1,7 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const float *ain, float *aout) {
+    aout[0] = ain[0] + 1.0f;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_f32_2.rs b/tests/src/android/renderscript/cts/fe_f32_2.rs
new file mode 100644
index 0000000..571100b
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_f32_2.rs
@@ -0,0 +1,8 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const float2 *ain, float2 *aout) {
+    aout[0].x = ain[0].x + 1.0f;
+    aout[0].y = ain[0].y + 1.0f;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_f32_3.rs b/tests/src/android/renderscript/cts/fe_f32_3.rs
new file mode 100644
index 0000000..1df67a7
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_f32_3.rs
@@ -0,0 +1,9 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const float3 *ain, float3 *aout) {
+    aout[0].x = ain[0].x + 1.0f;
+    aout[0].y = ain[0].y + 1.0f;
+    aout[0].z = ain[0].z + 1.0f;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_f32_4.rs b/tests/src/android/renderscript/cts/fe_f32_4.rs
new file mode 100644
index 0000000..50a50ec
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_f32_4.rs
@@ -0,0 +1,10 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const float4 *ain, float4 *aout) {
+    aout[0].x = ain[0].x + 1.0f;
+    aout[0].y = ain[0].y + 1.0f;
+    aout[0].z = ain[0].z + 1.0f;
+    aout[0].w = ain[0].w + 1.0f;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_f64.rs b/tests/src/android/renderscript/cts/fe_f64.rs
new file mode 100644
index 0000000..b609a08
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_f64.rs
@@ -0,0 +1,7 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const double *ain, double *aout) {
+    aout[0] = ain[0] + 1.0;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_f64_2.rs b/tests/src/android/renderscript/cts/fe_f64_2.rs
new file mode 100644
index 0000000..a97628b
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_f64_2.rs
@@ -0,0 +1,8 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const double2 *ain, double2 *aout) {
+    aout[0].x = ain[0].x + 1.0;
+    aout[0].y = ain[0].y + 1.0;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_f64_3.rs b/tests/src/android/renderscript/cts/fe_f64_3.rs
new file mode 100644
index 0000000..b6e97b8
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_f64_3.rs
@@ -0,0 +1,9 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const double3 *ain, double3 *aout) {
+    aout[0].x = ain[0].x + 1.0;
+    aout[0].y = ain[0].y + 1.0;
+    aout[0].z = ain[0].z + 1.0;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_f64_4.rs b/tests/src/android/renderscript/cts/fe_f64_4.rs
new file mode 100644
index 0000000..959c30b
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_f64_4.rs
@@ -0,0 +1,10 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const double4 *ain, double4 *aout) {
+    aout[0].x = ain[0].x + 1.0;
+    aout[0].y = ain[0].y + 1.0;
+    aout[0].z = ain[0].z + 1.0;
+    aout[0].w = ain[0].w + 1.0;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i16.rs b/tests/src/android/renderscript/cts/fe_i16.rs
new file mode 100644
index 0000000..e45a0a8
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i16.rs
@@ -0,0 +1,7 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const short *ain, ushort *aout) {
+    aout[0] = ain[0] + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i16_2.rs b/tests/src/android/renderscript/cts/fe_i16_2.rs
new file mode 100644
index 0000000..8eb8245
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i16_2.rs
@@ -0,0 +1,8 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const short2 *ain, ushort2 *aout) {
+    aout[0].x = ain[0].x + 1;
+    aout[0].y = ain[0].y + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i16_3.rs b/tests/src/android/renderscript/cts/fe_i16_3.rs
new file mode 100644
index 0000000..09113a5
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i16_3.rs
@@ -0,0 +1,9 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const short3 *ain, ushort3 *aout) {
+    aout[0].x = ain[0].x + 1;
+    aout[0].y = ain[0].y + 1;
+    aout[0].z = ain[0].z + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i16_4.rs b/tests/src/android/renderscript/cts/fe_i16_4.rs
new file mode 100644
index 0000000..4a5ca2c
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i16_4.rs
@@ -0,0 +1,10 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const short4 *ain, ushort4 *aout) {
+    aout[0].x = ain[0].x + 1;
+    aout[0].y = ain[0].y + 1;
+    aout[0].z = ain[0].z + 1;
+    aout[0].w = ain[0].w + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i32.rs b/tests/src/android/renderscript/cts/fe_i32.rs
new file mode 100644
index 0000000..402a1f7
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i32.rs
@@ -0,0 +1,7 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const int *ain, uint *aout) {
+    aout[0] = ain[0] + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i32_2.rs b/tests/src/android/renderscript/cts/fe_i32_2.rs
new file mode 100644
index 0000000..bff5460
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i32_2.rs
@@ -0,0 +1,8 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const int2 *ain, uint2 *aout) {
+    aout[0].x = ain[0].x + 1;
+    aout[0].y = ain[0].y + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i32_3.rs b/tests/src/android/renderscript/cts/fe_i32_3.rs
new file mode 100644
index 0000000..ce666c0
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i32_3.rs
@@ -0,0 +1,9 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const int3 *ain, uint3 *aout) {
+    aout[0].x = ain[0].x + 1;
+    aout[0].y = ain[0].y + 1;
+    aout[0].z = ain[0].z + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i32_4.rs b/tests/src/android/renderscript/cts/fe_i32_4.rs
new file mode 100644
index 0000000..ab66082
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i32_4.rs
@@ -0,0 +1,10 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const int4 *ain, uint4 *aout) {
+    aout[0].x = ain[0].x + 1;
+    aout[0].y = ain[0].y + 1;
+    aout[0].z = ain[0].z + 1;
+    aout[0].w = ain[0].w + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i64.rs b/tests/src/android/renderscript/cts/fe_i64.rs
new file mode 100644
index 0000000..352a48e
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i64.rs
@@ -0,0 +1,7 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const long *ain, ulong *aout) {
+    aout[0] = ain[0] + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i64_2.rs b/tests/src/android/renderscript/cts/fe_i64_2.rs
new file mode 100644
index 0000000..f39531d
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i64_2.rs
@@ -0,0 +1,8 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const long2 *ain, ulong2 *aout) {
+    aout[0].x = ain[0].x + 1;
+    aout[0].y = ain[0].y + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i64_3.rs b/tests/src/android/renderscript/cts/fe_i64_3.rs
new file mode 100644
index 0000000..1229137
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i64_3.rs
@@ -0,0 +1,9 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const long3 *ain, ulong3 *aout) {
+    aout[0].x = ain[0].x + 1;
+    aout[0].y = ain[0].y + 1;
+    aout[0].z = ain[0].z + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i64_4.rs b/tests/src/android/renderscript/cts/fe_i64_4.rs
new file mode 100644
index 0000000..5e2b2ae
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i64_4.rs
@@ -0,0 +1,10 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const long4 *ain, ulong4 *aout) {
+    aout[0].x = ain[0].x + 1;
+    aout[0].y = ain[0].y + 1;
+    aout[0].z = ain[0].z + 1;
+    aout[0].w = ain[0].w + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i8.rs b/tests/src/android/renderscript/cts/fe_i8.rs
new file mode 100644
index 0000000..067ef50
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i8.rs
@@ -0,0 +1,7 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const char *ain, uchar *aout) {
+    aout[0] = ain[0] + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i8_2.rs b/tests/src/android/renderscript/cts/fe_i8_2.rs
new file mode 100644
index 0000000..cec1f57
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i8_2.rs
@@ -0,0 +1,8 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const char2 *ain, uchar2 *aout) {
+    aout[0].x = ain[0].x + 1;
+    aout[0].y = ain[0].y + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i8_3.rs b/tests/src/android/renderscript/cts/fe_i8_3.rs
new file mode 100644
index 0000000..9254ba5
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i8_3.rs
@@ -0,0 +1,9 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const char3 *ain, uchar3 *aout) {
+    aout[0].x = ain[0].x + 1;
+    aout[0].y = ain[0].y + 1;
+    aout[0].z = ain[0].z + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_i8_4.rs b/tests/src/android/renderscript/cts/fe_i8_4.rs
new file mode 100644
index 0000000..0c1fd1d
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_i8_4.rs
@@ -0,0 +1,10 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const char4 *ain, uchar4 *aout) {
+    aout[0].x = ain[0].x + 1;
+    aout[0].y = ain[0].y + 1;
+    aout[0].z = ain[0].z + 1;
+    aout[0].w = ain[0].w + 1;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/fe_struct.rs b/tests/src/android/renderscript/cts/fe_struct.rs
new file mode 100644
index 0000000..b22604d
--- /dev/null
+++ b/tests/src/android/renderscript/cts/fe_struct.rs
@@ -0,0 +1,13 @@
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+struct fe_test {
+    int i;
+    float f;
+};
+
+void root(const struct fe_test *ain, struct fe_test *aout) {
+    aout[0].i = ain[0].i + 1;
+    aout[0].f = ain[0].f + 1.0f;
+    return;
+}
diff --git a/tests/src/android/renderscript/cts/graphics_runner.rs b/tests/src/android/renderscript/cts/graphics_runner.rs
index b8ec15f..18e1f76 100644
--- a/tests/src/android/renderscript/cts/graphics_runner.rs
+++ b/tests/src/android/renderscript/cts/graphics_runner.rs
@@ -39,7 +39,7 @@
 }
 
 // Just draw a quad with previously setup state
-int root(int launchID) {
+int root(void) {
     rsDebug("Running script", 0);
     return 0;
 }
diff --git a/tests/src/android/renderscript/cts/negate.rs b/tests/src/android/renderscript/cts/negate.rs
new file mode 100644
index 0000000..af76faa
--- /dev/null
+++ b/tests/src/android/renderscript/cts/negate.rs
@@ -0,0 +1,22 @@
+// Copyright (C) 2011 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.
+
+#pragma version(1)
+#pragma rs java_package_name(android.renderscript.cts)
+
+void root(const int *ain, int *aout) {
+    aout[0] = -1 * ain[0];
+    return;
+}
+
diff --git a/tests/src/android/renderscript/cts/primitives.rs b/tests/src/android/renderscript/cts/primitives.rs
old mode 100644
new mode 100755
index 55710cd..c121ec4
--- a/tests/src/android/renderscript/cts/primitives.rs
+++ b/tests/src/android/renderscript/cts/primitives.rs
@@ -1,3 +1,14 @@
+/*****************************************************************************
+ *****
+ *****
+ *****
+ ***** DANGER
+ ***** DO NOT ALTER THIS TEST WITHOUT VERIFYING ScriptTest.java STILL WORKS
+ ***** WE DEPEND ON VARIABLE ORDER FOR VERIFICATION
+ *****
+ *****
+ *****
+ *****************************************************************************/
 #include "shared.rsh"
 #include "structs.rsh"
 
@@ -9,6 +20,14 @@
 int intTest = -32;
 long longTest = 17179869184l; // 1 << 34
 long long longlongTest = 68719476736l; // 1 << 36
+bool boolTest = false;
+
+struct myStruct {
+    int i;
+} structTest;
+
+rs_allocation allocationTest;
+int *intPtrTest;
 
 uchar ucharTest = 8;
 ushort ushortTest = 16;
diff --git a/tests/src/android/renderscript/cts/struct_pad.rs b/tests/src/android/renderscript/cts/struct_pad.rs
new file mode 100644
index 0000000..0c013a3
--- /dev/null
+++ b/tests/src/android/renderscript/cts/struct_pad.rs
@@ -0,0 +1,8 @@
+#include "shared.rsh"
+
+struct PadMe {
+    int i;
+    float4 f4;
+    int j;
+} s;
+
diff --git a/tests/src/android/renderscript/cts/structs.rsh b/tests/src/android/renderscript/cts/structs.rsh
index 58f6186..e7d2efd 100755
--- a/tests/src/android/renderscript/cts/structs.rsh
+++ b/tests/src/android/renderscript/cts/structs.rsh
@@ -13,12 +13,12 @@
 // limitations under the License.
 
 typedef struct ConstMatrix {
-    rs_matrix4x4 MVP;
+    rs_matrix4x4 MATRIX;
 } ConstMatrix_s;
 ConstMatrix_s *c1;
 
 typedef struct ConstComplex {
-    rs_matrix4x4 MVP;
+    rs_matrix4x4 MATRIX;
     rs_matrix4x4 EXTRA;
     float extra1;
     float2 extra2;
diff --git a/tests/src/android/speech/tts/cts/StubTextToSpeechService.java b/tests/src/android/speech/tts/cts/StubTextToSpeechService.java
new file mode 100644
index 0000000..5e6bb41
--- /dev/null
+++ b/tests/src/android/speech/tts/cts/StubTextToSpeechService.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2011 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 android.speech.tts.cts;
+
+import android.media.AudioFormat;
+import android.speech.tts.SynthesisCallback;
+import android.speech.tts.SynthesisRequest;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.TextToSpeechService;
+
+/**
+ * Stub implementation of {@link TextToSpeechService}. Used for testing the
+ * TTS engine API.
+ */
+public class StubTextToSpeechService extends TextToSpeechService {
+
+    @Override
+    protected String[] onGetLanguage() {
+        return new String[] { "eng", "USA", "" };
+    }
+
+    @Override
+    protected int onIsLanguageAvailable(String lang, String country, String variant) {
+        return TextToSpeech.LANG_AVAILABLE;
+    }
+
+    @Override
+    protected int onLoadLanguage(String lang, String country, String variant) {
+        return TextToSpeech.LANG_AVAILABLE;
+    }
+
+    @Override
+    protected void onStop() {
+    }
+
+    @Override
+    protected void onSynthesizeText(SynthesisRequest request, SynthesisCallback callback) {
+        if (callback.start(16000, AudioFormat.ENCODING_PCM_16BIT, 1) != TextToSpeech.SUCCESS) {
+            return;
+        }
+        byte[] data = { 0x01, 0x2 };
+        if (callback.audioAvailable(data, 0, data.length) != TextToSpeech.SUCCESS) {
+            return;
+        }
+        if (callback.done() != TextToSpeech.SUCCESS) {
+            return;
+        }
+    }
+
+}
diff --git a/tests/src/android/theme/cts/ActionBarModifier.java b/tests/src/android/theme/cts/ActionBarModifier.java
new file mode 100644
index 0000000..2f33a79
--- /dev/null
+++ b/tests/src/android/theme/cts/ActionBarModifier.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.app.ActionBar;
+import android.app.ActionBar.Tab;
+import android.app.FragmentTransaction;
+
+/**
+ * Implementation of the {@link ActivityTestInfo} interface for {@link ActionBar} tests.
+ */
+public class ActionBarModifier implements ActivityTestInfo {
+    /**
+     * Runs the basic test case that performs no modifications on the {@link ActionBar}.
+     */
+    public static final int BASIC = 0;
+
+    /**
+     * Runs the test that turns the icon on the {@link ActionBar} into the up icon version.
+     */
+    public static final int DISPLAY_HOME_AS_UP = 1;
+
+    /**
+     * Runs the test that displays tabs in the {@link ActionBar}.
+     */
+    public static final int TABS = 2;
+
+    /**
+     * Runs the test that displays a list ({@link Spinner}-style) in the {@link ActionBar}.
+     */
+    public static final int LIST = 3;
+
+    /**
+     * Runs the test that displays only the icon and not the title in the {@link ActionBar}.
+     */
+    public static final int NO_TITLE = 4;
+
+    /**
+     * Runs the test that displays only the icon in the {@link ActionBar}.
+     */
+    public static final int NO_ICON = 5;
+
+    /**
+     * Runs the test that displays action items in the {@link ActionBar}.
+     */
+    public static final int ACTION_ITEMS = 6;
+
+    /**
+     * Runs the test that displays a {@link SearchView} as an action view in the {@link ActionBar}.
+     */
+    public static final int ACTION_VIEW = 7;
+
+    /**
+     * Runs the test that displays a {@link SearchView} as a collapsable action view (opened) in
+     * the {@link ActionBar}.
+     */
+    public static final int COLLAPSED_ACTION_VIEW = 8;
+
+    private String mTestname;
+    private int mTestType;
+
+    /**
+     * Creates an ActionBarModifier with the specified testname and test type.
+     * @param testname The unique name of hte test.
+     * @param testType The type of test to run based on the public constants of ActionBarModifier.
+     */
+    public ActionBarModifier(String testname, int testType) {
+        mTestname = testname;
+        mTestType = testType;
+    }
+
+    public String getTestName() {
+        return mTestname;
+    }
+    @Override
+    public void modifyActivity(SnapshotActivity activity) {
+        ActionBar actionBar = activity.getActionBar();
+
+        if (actionBar == null) {
+            return;
+        }
+
+        // based on which test was asked, performs a different sequence of actions
+        switch (mTestType) {
+            case BASIC:
+                break;
+            case DISPLAY_HOME_AS_UP:
+                actionBar.setDisplayHomeAsUpEnabled(true);
+                break;
+            case TABS:
+                actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
+                actionBar.setDisplayShowTitleEnabled(false);
+                actionBar.addTab(actionBar.newTab().setText("First")
+                        .setTabListener(new MyTabListener()));
+                actionBar.addTab(actionBar.newTab().setText("Second")
+                        .setTabListener(new MyTabListener()));
+                actionBar.addTab(actionBar.newTab().setText("Third")
+                        .setTabListener(new MyTabListener()));
+                break;
+            case LIST:
+                actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);
+                break;
+            case NO_TITLE:
+                actionBar.setDisplayShowTitleEnabled(false);
+                break;
+            case NO_ICON:
+                actionBar.setDisplayShowHomeEnabled(false);
+                break;
+            // for the last three test, a state is set because these ones must be set up
+            // in Activity.onCreateOptionsMenu. A flag is sent that is then checked later
+            // in the Activity lifecycle
+            case ACTION_ITEMS:
+            case ACTION_VIEW:
+            case COLLAPSED_ACTION_VIEW:
+                activity.setActionItemState(mTestType);
+        }
+    }
+
+    /**
+     * Stub class that exists since tabs need to have a listener. Does nothing.
+     */
+    private class MyTabListener implements ActionBar.TabListener {
+        public void onTabSelected(Tab tab, FragmentTransaction ft) {
+            // do nothing
+        }
+
+        public void onTabUnselected(Tab tab, FragmentTransaction ft) {
+            // do nothing
+        }
+
+        public void onTabReselected(Tab tab, FragmentTransaction ft) {
+            // do nothing
+        }
+    }
+
+}
diff --git a/tests/src/android/theme/cts/ActivitySnapshotTester.java b/tests/src/android/theme/cts/ActivitySnapshotTester.java
new file mode 100644
index 0000000..38e8942
--- /dev/null
+++ b/tests/src/android/theme/cts/ActivitySnapshotTester.java
@@ -0,0 +1,236 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import com.android.cts.stub.R;
+
+import android.app.Activity;
+import android.app.Instrumentation;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.os.Handler;
+import android.test.ActivityInstrumentationTestCase2;
+import android.view.View;
+import android.view.View.MeasureSpec;
+
+/**
+ * This class serves as the main driver for the activity screenshot tests.
+ */
+public class ActivitySnapshotTester {
+    private ActivityInstrumentationTestCase2<? extends SnapshotActivity> mTestCases;
+    private boolean mSplitMode;
+    private boolean mShouldRetryTest;
+
+    /**
+     * Creates an {@link ActivitySnapshotTester} to run all of the tests in the given
+     * configuration as determined by the parameters passed to it.
+     * @param testCases The ActivityInstrumentationTestCase2 that provides the activity
+     * to test.
+     * @param splitMode true if the test should use SplitActionBarWhenNarrow as a uiOption.
+     * Note that this flag does not actually enable that feature, it merely labels
+     * the tests appropriately.
+     */
+    public ActivitySnapshotTester(
+            ActivityInstrumentationTestCase2<? extends SnapshotActivity> testCases,
+            boolean splitMode) {
+        mTestCases = testCases;
+        mSplitMode = splitMode;
+    }
+
+    /**
+     * This function either generates the known-good versions of the activity screenshot tests
+     * or runs the tests in either portrait or landscape orientation
+     * mode based upon the parameters.
+     * @param generate true if the known good versions of the tests should be generated.
+     * @param portrait true if the tests should be run in portrait orientation.
+     */
+    public void genOrTestActivityBitmaps(boolean generate, boolean portrait) {
+        ThemeInfo[] themes = ThemeTests.getThemes();
+        ActivityTestInfo[] activityTests = ThemeTests.getActivityTests();
+
+        int numActivityTests = activityTests.length;
+
+        // iterate through all of the themes
+        for (ThemeInfo theme : themes) {
+            // iterate through all of the tests
+            for (int i = 0; i < numActivityTests; i++) {
+                // run in portrait
+                if (portrait) {
+                    genOrTestActivityBitmap(
+                            theme, activityTests[i], i,
+                            ActivityInfo.SCREEN_ORIENTATION_PORTRAIT, generate);
+                } else { // landscape
+                    genOrTestActivityBitmap(
+                            theme, activityTests[i], i,
+                            ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE, generate);
+                }
+            }
+        }
+    }
+
+    private void genOrTestActivityBitmap(
+            final ThemeInfo theme, final ActivityTestInfo test, final int testIndex,
+            final int orientation, final boolean generate) {
+        mShouldRetryTest = true;
+        while (mShouldRetryTest) {
+            mShouldRetryTest = false;
+
+            Instrumentation instrumentation = mTestCases.getInstrumentation();
+
+            // build the intent to send to the activity
+            Intent intent = new Intent();
+            intent.putExtra(ThemeTests.EXTRA_THEME_ID, theme.getResourceId());
+            intent.putExtra(ThemeTests.EXTRA_THEME_NAME, theme.getThemeName());
+            intent.putExtra(ThemeTests.EXTRA_ORIENTATION, orientation);
+            intent.putExtra(ThemeTests.EXTRA_ACTIVITY_TEST_INDEX, testIndex);
+            intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
+            mTestCases.setActivityIntent(intent);
+
+            SnapshotActivity activity = mTestCases.getActivity();
+
+            // run the test
+            activity.runOnUiThread(
+                    new ActivitySnapshotRunnable(theme, test, orientation, generate));
+
+            instrumentation.waitForIdleSync();
+
+            ((TestReset) mTestCases).reset();
+        }
+
+    }
+
+    /**
+     * This class exists so that we can delay testing until we are certain that our orientation
+     * and window size are correct. We check the values and then, if we're not in a stable state,
+     * just post another Runnable for the future.
+     */
+    private class ActivitySnapshotRunnable implements Runnable {
+        private ThemeInfo mTheme;
+        private ActivityTestInfo mTest;
+        private int mOrientation;
+        private boolean mGenerate;
+        private boolean mShouldRequestLayout;
+
+        /**
+         * Creates a new ActivitySnapshotRunnable.
+         * @param theme The {@link ThemeInfo} to test.
+         * @param test The {@link ActivityTestInfo} to test.
+         * @param orientation The orientation in which the test should be.
+         * @param generate Whether we should be generating a known-good version
+         * or comparing to the previously generated version.
+         */
+        public ActivitySnapshotRunnable(ThemeInfo theme, ActivityTestInfo test,
+                int orientation, boolean generate) {
+            this(theme, test, orientation, generate, true);
+        }
+
+        /**
+         * Creates a new ActivitySnapshotRunnable.
+         * @param theme The {@link ThemeInfo} to test.
+         * @param test The {@link ActivityTestInfo} to test.
+         * @param orientation The orientation in which the test should be.
+         * @param generate Whether we should be generating a known-good version
+         * or comparing to the previously generated version.
+         * @param shouldRequestLayout true if, before testing or saving the bitmap,
+         * another layout pass should occur.
+         */
+        private ActivitySnapshotRunnable(ThemeInfo theme, ActivityTestInfo test,
+                int orientation, boolean generate, boolean shouldRequestLayout) {
+            mTheme = theme;
+            mTest = test;
+            mOrientation = orientation;
+            mGenerate = generate;
+            mShouldRequestLayout = shouldRequestLayout;
+        }
+
+        public void run() {
+            SnapshotActivity activity = mTestCases.getActivity();
+
+            String orientationString = (mOrientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)
+                    ? "port" : "land";
+            String testName = mTheme.getThemeName() + "_" + orientationString +
+                    "_" + mTest.getTestName();
+
+            Configuration config = activity.getResources().getConfiguration();
+
+            int realOrientation;
+            switch (config.orientation) {
+                case Configuration.ORIENTATION_LANDSCAPE:
+                    realOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;
+                    break;
+                case Configuration.ORIENTATION_PORTRAIT:
+                    realOrientation = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;
+                    break;
+                default:
+                    realOrientation = -1;
+                    break;
+            }
+
+            Resources resources = activity.getResources();
+            int realWidth = resources.getDimensionPixelSize(R.dimen.reference_width);
+            int realHeight = resources.getDimensionPixelSize(R.dimen.reference_height);
+            View decorView = activity.getWindow().getDecorView();
+            int width = decorView.getWidth();
+            int height = decorView.getHeight();
+            int windowHeight = activity.getWindow().getAttributes().height;
+            int windowWidth = activity.getWindow().getAttributes().width;
+
+            if (mOrientation != realOrientation ||
+                    width != realWidth || height != realHeight ||
+                    width != windowWidth || height != windowHeight) {
+                mShouldRetryTest = true;
+                return;
+            }
+
+            // seems more stable if we make sure to request the layout again
+            // can't hurt if it's just one more time
+            if (mShouldRequestLayout) {
+                delaySnapshot(activity, false);
+                return;
+            }
+
+            BitmapProcessor processor;
+
+            // whether we should generate the bitmap or compare it to the good version
+            if (mGenerate) {
+                processor = new BitmapSaver(activity, testName, mSplitMode);
+            } else {
+                processor = new BitmapComparer(activity, null, testName, true, mSplitMode);
+            }
+
+            Bitmap bmp = activity.getBitmapOfWindow();
+            processor.processBitmap(bmp);
+        }
+
+        /**
+         * Delays taking a snapshot for a bit longer.
+         */
+        private void delaySnapshot(Activity activity, final boolean shouldRequestLayout) {
+            View view = activity.getWindow().getDecorView();
+
+            view.measure(MeasureSpec.makeMeasureSpec(view.getWidth(), MeasureSpec.EXACTLY),
+                    MeasureSpec.makeMeasureSpec(view.getHeight(), MeasureSpec.EXACTLY));
+            view.layout(0, 0, view.getWidth(), view.getHeight());
+
+            new Handler().post(new ActivitySnapshotRunnable(mTheme, mTest,
+                    mOrientation, mGenerate, shouldRequestLayout));
+        }
+    }
+}
diff --git a/tests/src/android/theme/cts/ActivityTestInfo.java b/tests/src/android/theme/cts/ActivityTestInfo.java
new file mode 100644
index 0000000..1eeaaec
--- /dev/null
+++ b/tests/src/android/theme/cts/ActivityTestInfo.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+/**
+ * Interface that exists so as to use one piece of code to run all of the
+ * activity snapshot tests. Note that each test must have a unique test name
+ * as returned by {@link #getTestName()}. If you wish to modify the activity,
+ * make sure to do any changes within {@link #modifyActivity(SnapshotActivity)}.<p>
+ *
+ * If absolutely necessary, you can edit the lifecycle methods of {@link SnapshotActivity}.
+ */
+public interface ActivityTestInfo {
+    /**
+     * Returns the unique name of the test. Note that this name must be unique
+     * among all of the activity tests and all of the theme tests.
+     * @return The unique name of the test.
+     */
+    public String getTestName();
+
+    /**
+     * Performs some manipulations on the activity. Essentially, this function
+     * is the test's sandbox to do whatever is needed to change the look of the
+     * activity.
+     * @param activity The {@link SnapshotActivity} to modify.
+     */
+    public void modifyActivity(SnapshotActivity activity);
+}
diff --git a/tests/src/android/theme/cts/AlertDialogBuilder.java b/tests/src/android/theme/cts/AlertDialogBuilder.java
new file mode 100644
index 0000000..040d1b5
--- /dev/null
+++ b/tests/src/android/theme/cts/AlertDialogBuilder.java
@@ -0,0 +1,104 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.view.View;
+
+/**
+ * Implements the {@link DialogBuilder} interface to build and show
+ * {@link AlertDialog}s for the purposes of testing. In order to reuse
+ * as much as possible, the constructor takes a flag that describes the
+ * type of AlertDialog to build for the test.
+ *
+ * If you want to create another {@link AlertDialog} test, simply
+ * add another flag and add another case to the switch statement
+ * in {link buildDialog()}
+ */
+public class AlertDialogBuilder implements DialogBuilder {
+    /**
+     * Build an {@link AlertDialog} with one button.
+     */
+    public static final int ONE_BUTTON = 0;
+    /**
+     * Build an {@link AlertDialog} with two buttons.
+     */
+    public static final int TWO_BUTTONS = 1;
+    /**
+     * Build an {@link AlertDialog} with three buttons.
+     */
+    public static final int THREE_BUTTONS = 2;
+    /**
+     * Build an {@link AlertDialog} with a list of items.
+     */
+    public static final int LIST = 3;
+    /**
+     * Build an {@link AlertDialog} with a single-choice list of items.
+     */
+    public static final int SINGLE_CHOICE = 4;
+    /**
+     * Build an {@link AlertDialog} with a multi-choice list of items.
+     */
+    public static final int MULTI_CHOICE = 5;
+
+    private int mDialogType;
+
+    private static final CharSequence[] ITEMS = {"Red", "Green", "Blue"};
+
+    public AlertDialogBuilder(int dialogType) {
+        mDialogType = dialogType;
+    }
+
+    @Override
+    public Dialog buildDialog(View view) {
+        AlertDialog.Builder builder = new AlertDialog.Builder(view.getContext());
+
+        switch (mDialogType) {
+            case ONE_BUTTON:
+                builder.setTitle("Exit Dialog")
+                        .setMessage("Are you sure you want to exit?")
+                        .setPositiveButton("Exit", null);
+                break;
+            case TWO_BUTTONS:
+                builder.setMessage("Are you sure you want to exit?")
+                        .setPositiveButton("Exit", null)
+                        .setNegativeButton("Cancel", null);
+                break;
+            case THREE_BUTTONS:
+                builder.setMessage("Are you sure you want to exit?")
+                        .setPositiveButton("Exit", null)
+                        .setNeutralButton("Neutral", null)
+                        .setNegativeButton("Cancel", null);
+                break;
+            case LIST:
+                builder.setTitle("Pick a Color")
+                        .setItems(ITEMS, null);
+                break;
+            case SINGLE_CHOICE:
+                builder.setTitle("Pick a Color")
+                        .setSingleChoiceItems(ITEMS, 1, null);
+                break;
+            case MULTI_CHOICE:
+                builder.setTitle("Pick a Color")
+                        .setMultiChoiceItems(ITEMS, new boolean[]{false, true, false}, null);
+                break;
+        }
+
+        return builder.show();
+    }
+}
\ No newline at end of file
diff --git a/tests/src/android/theme/cts/BitmapComparer.java b/tests/src/android/theme/cts/BitmapComparer.java
new file mode 100644
index 0000000..7171690
--- /dev/null
+++ b/tests/src/android/theme/cts/BitmapComparer.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import com.android.cts.stub.R;
+
+import android.app.Activity;
+import android.content.res.Resources;
+import android.content.res.Resources.NotFoundException;
+import android.graphics.Bitmap;
+import android.graphics.drawable.BitmapDrawable;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import junit.framework.Assert;
+
+/**
+ * Implementation of {@link BitmapProcessor} that compares the created bitmap
+ * to a known good version based on pixel-perfect matching
+ * (specifically {@link Bitmap#sameAs(Bitmap)}. Asserts if the bitmaps do not compare.
+ */
+public class BitmapComparer implements BitmapProcessor {
+    private String mBitmapIdName;
+    private boolean mShouldAssert;
+    private Activity mActivity;
+    private ImageView mReferenceImage;
+
+    public BitmapComparer(Activity activity, ImageView referenceImage,
+            String filename, boolean shouldAssert, boolean splitMode) {
+        mActivity = activity;
+        mReferenceImage = referenceImage;
+        mShouldAssert = shouldAssert;
+
+        if (splitMode) {
+            mBitmapIdName = filename + "_split";
+        } else {
+            mBitmapIdName = filename;
+        }
+    }
+
+    @Override
+    public void processBitmap(Bitmap bitmap) {
+        // get the bitmap from the resource system
+        // since we only have the name, not the resource ID,
+        // we need to look up the ID first
+        Resources r = mActivity.getResources();
+        int resourceId = r.getIdentifier(mBitmapIdName, "drawable", mActivity.getPackageName());
+
+        BitmapDrawable drawable = null;
+
+        try {
+            drawable = (BitmapDrawable) r.getDrawable(resourceId);
+        } catch (NotFoundException e) {
+            Assert.fail("Test Failed: Resource not found - " + mBitmapIdName);
+        }
+
+        Bitmap bmp2 = drawable.getBitmap();
+
+        if (mReferenceImage != null) {
+            mReferenceImage.setImageBitmap(bmp2);
+        }
+
+        // pixel-perfect matching - could easily re-write to use a fuzzy-matching algorithm
+        boolean identical = bmp2.sameAs(bitmap);
+
+        // the second and third options are for the manual lookup version
+        if (mShouldAssert) {
+            if (!identical) {
+                BitmapSaver saver = new BitmapSaver(mActivity, "failed_image_" + mBitmapIdName, false);
+                saver.processBitmap(bitmap);
+            }
+            Assert.assertTrue("Test failed: " + mBitmapIdName, identical);
+        } else if (identical) {
+            ((TextView) mActivity.findViewById(R.id.text)).setText("Bitmaps identical");
+        } else {
+            ((TextView) mActivity.findViewById(R.id.text)).setText("Bitmaps differ");
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/src/android/theme/cts/BitmapProcessor.java b/tests/src/android/theme/cts/BitmapProcessor.java
new file mode 100644
index 0000000..4031471
--- /dev/null
+++ b/tests/src/android/theme/cts/BitmapProcessor.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.graphics.Bitmap;
+
+/**
+ * Simple interface in order to share code between the bitmap comparison and bitmap generation
+ * steps.
+ */
+public interface BitmapProcessor {
+    /**
+     * Processes the bitmap that is passed into this function, either saving it or comparing
+     * it against a previously generated version.
+     * @param bitmap The bitmap to process.
+     */
+    public void processBitmap(Bitmap bitmap);
+}
\ No newline at end of file
diff --git a/tests/src/android/theme/cts/BitmapSaver.java b/tests/src/android/theme/cts/BitmapSaver.java
new file mode 100644
index 0000000..a28944d
--- /dev/null
+++ b/tests/src/android/theme/cts/BitmapSaver.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.app.Activity;
+import android.content.Context;
+import android.graphics.Bitmap;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+/**
+ * Implementation of {@link BitmapProcessor} that saves a known-good version of a
+ * bitmap and saves it to the application's data folder.
+ */
+public class BitmapSaver implements BitmapProcessor {
+    private String mFilename;
+    private Activity mActivity;
+
+    public BitmapSaver(Activity activity, String filename, boolean splitMode) {
+        mActivity = activity;
+
+        if (splitMode) {
+            mFilename = filename + "_split.png";
+        } else {
+            mFilename = filename + ".png";
+        }
+    }
+
+    @Override
+    public void processBitmap(Bitmap bitmap) {
+        try {
+            FileOutputStream fos = mActivity.openFileOutput(mFilename, Context.MODE_PRIVATE);
+            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
+            fos.close();
+        } catch (FileNotFoundException e) {
+            Assert.fail("Test Failed: FileNotFoundException thrown");
+        } catch (IOException e) {
+            Assert.fail("Test Failed: IOException thrown");
+        }
+    }
+}
\ No newline at end of file
diff --git a/tests/src/android/theme/cts/CalendarViewModifier.java b/tests/src/android/theme/cts/CalendarViewModifier.java
new file mode 100644
index 0000000..0f3be46
--- /dev/null
+++ b/tests/src/android/theme/cts/CalendarViewModifier.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.view.View;
+import android.widget.CalendarView;
+
+/**
+ * Modifies the CalendarView widget in order to set a precise date.
+ */
+public class CalendarViewModifier implements ThemeTestModifier {
+    /**
+     * Long representation of a date that is 30 years in milliseconds from
+     * Unix epoch (January 1, 1970 00:00:00).
+     */
+    private static final long DATE = 946707779241L;
+
+    @Override
+    public View modifyView(View view) {
+        ((CalendarView) view).setDate(DATE);
+        return view;
+    }
+}
diff --git a/tests/src/android/theme/cts/DatePickerModifier.java b/tests/src/android/theme/cts/DatePickerModifier.java
new file mode 100644
index 0000000..b3d2002
--- /dev/null
+++ b/tests/src/android/theme/cts/DatePickerModifier.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.view.View;
+import android.widget.DatePicker;
+
+/**
+ * Modifies a DatePicker widget to set a precise date.
+ */
+public class DatePickerModifier implements ThemeTestModifier {
+
+    @Override
+    public View modifyView(View view) {
+        DatePicker tp = (DatePicker) view;
+        tp.updateDate(2011, 6, 21);
+        return view;
+    }
+}
diff --git a/tests/src/android/theme/cts/DialogBuilder.java b/tests/src/android/theme/cts/DialogBuilder.java
new file mode 100644
index 0000000..a870895
--- /dev/null
+++ b/tests/src/android/theme/cts/DialogBuilder.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.app.Dialog;
+import android.view.View;
+
+/**
+ * Interface to implement should you want to write a test that uses
+ * a Dialog. Since a Dialog shows in a new window, implementation
+ * of this interface is required in order to appropriately save
+ * the Dialog for testing.
+ */
+public interface DialogBuilder {
+    /**
+     * Builds and shows a Dialog to be saved.
+     * @return The Dialog to save.
+     */
+    public Dialog buildDialog(View view);
+}
\ No newline at end of file
diff --git a/tests/src/android/theme/cts/DialogModifier.java b/tests/src/android/theme/cts/DialogModifier.java
new file mode 100644
index 0000000..bf37f4d
--- /dev/null
+++ b/tests/src/android/theme/cts/DialogModifier.java
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.app.Dialog;
+import android.view.View;
+import android.view.ViewGroup;
+
+/**
+ * This class builds and modifies a Dialog (or its derived classes)
+ * in order to use in the Theme Testing framework. To create a new
+ * Dialog test, either create a new class that implements {@link DialogBuilder}
+ * or add another test to the existing implementations of {@link DialogBuilder}.
+ *
+ * See {@link AlertDialogBuilder} for an existing implementation.
+ */
+public class DialogModifier implements ThemeTestModifier {
+    private DialogBuilder mBuilder;
+
+    public DialogModifier(DialogBuilder builder) {
+        mBuilder = builder;
+    }
+
+    @Override
+    public View modifyView(View view) {
+        Dialog alert = mBuilder.buildDialog(view);
+        ViewGroup parent = (ViewGroup) view.getParent();
+        parent.removeView(view); // remove the filler view
+
+        // get the dialog as a view
+        View newView = alert.getWindow().getDecorView();
+
+        // remove it from the dialog
+        alert.getWindow().getWindowManager().removeView(newView);
+
+        // so we can add it to our ViewGroup
+        parent.addView(newView);
+
+        return newView;
+    }
+}
diff --git a/tests/src/android/theme/cts/OrientationSelectorActivity.java b/tests/src/android/theme/cts/OrientationSelectorActivity.java
new file mode 100644
index 0000000..72aa425
--- /dev/null
+++ b/tests/src/android/theme/cts/OrientationSelectorActivity.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import com.android.cts.stub.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ArrayAdapter;
+import android.widget.ListView;
+
+/**
+ * This activity exists solely for debugging purposes. It is
+ * the first activity seen when launching the manual viewer of tests.
+ * It allows the user to select whether they want to see the tests
+ * in portrait or landscape mode.
+ */
+public class OrientationSelectorActivity extends Activity {
+    private static final String[] mOrientations = {"landscape", "portrait"};
+    /**
+     * Called with the activity is first created.
+     */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.themetestlistactivity);
+
+        ListView lv = (ListView) findViewById(R.id.tests_list);
+
+        lv.setAdapter(
+                new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, mOrientations));
+
+        lv.setOnItemClickListener(mTestClickedListener);
+    }
+
+    private OnItemClickListener mTestClickedListener = new OnItemClickListener() {
+        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+            Intent intent =
+                new Intent(OrientationSelectorActivity.this, ThemeSelectorActivity.class);
+            intent.putExtra(ThemeTests.EXTRA_ORIENTATION, position);
+            startActivity(intent);
+        }
+    };
+}
diff --git a/tests/src/android/theme/cts/ProgressDialogBuilder.java b/tests/src/android/theme/cts/ProgressDialogBuilder.java
new file mode 100644
index 0000000..18decd9
--- /dev/null
+++ b/tests/src/android/theme/cts/ProgressDialogBuilder.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.app.Dialog;
+import android.app.ProgressDialog;
+import android.view.View;
+
+/**
+ * This class implements the {@link DialogBuilder} interface
+ * in order to build {@link ProgressDialog}s for testing purposes.
+ *
+ * <p>In order to add more tests of {@link ProgressDialog}, simply
+ * add another case inside {@link ProgressDialogBuilder#buildDialog}.
+ */
+public class ProgressDialogBuilder implements DialogBuilder {
+    /**
+     * Builds a {@link ProgressDialog} that contains a circular
+     * {@link ProgressBar}.
+     */
+    public static final int SPINNER = 0;
+
+    /**
+     * Builds a {@link ProgressDialog} that contains a horizontal
+     * {@link ProgressBar}.
+     */
+    public static final int HORIZONTAL = 1;
+
+    private int mDialogType;
+
+    public ProgressDialogBuilder(int dialogType) {
+        mDialogType = dialogType;
+    }
+
+    @Override
+    public Dialog buildDialog(View view) {
+        ProgressDialog progressDialog = new ProgressDialog(view.getContext());
+        progressDialog.setMessage("Loading...");
+
+        switch (mDialogType) {
+            case SPINNER:
+                progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
+                break;
+            case HORIZONTAL:
+                progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
+                progressDialog.setMax(100);
+                break;
+        }
+
+        progressDialog.show();
+        return progressDialog;
+    }
+
+}
diff --git a/tests/src/android/theme/cts/SearchViewModifier.java b/tests/src/android/theme/cts/SearchViewModifier.java
new file mode 100644
index 0000000..dc2c024
--- /dev/null
+++ b/tests/src/android/theme/cts/SearchViewModifier.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.view.View;
+import android.widget.SearchView;
+
+/**
+ * This class modifies {@link SearchView} for the various tests that test
+ * the look of it.
+ */
+public class SearchViewModifier implements ThemeTestModifier {
+    public static final int QUERY_HINT = 0;
+    public static final int QUERY = 1;
+
+    private int mSearchViewType;
+
+    public SearchViewModifier(int searchViewType) {
+        mSearchViewType = searchViewType;
+    }
+
+    @Override
+    public View modifyView(View view) {
+        SearchView sv = (SearchView) view;
+
+        switch (mSearchViewType) {
+            case QUERY_HINT:
+                sv.setQueryHint("Query Hint");
+                break;
+            case QUERY:
+                sv.setQuery("Query", false);
+                break;
+        }
+
+        sv.setIconifiedByDefault(false);
+        return sv;
+    }
+}
diff --git a/tests/src/android/theme/cts/SnapshotActivity.java b/tests/src/android/theme/cts/SnapshotActivity.java
new file mode 100644
index 0000000..1344600
--- /dev/null
+++ b/tests/src/android/theme/cts/SnapshotActivity.java
@@ -0,0 +1,166 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import com.android.cts.stub.R;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.os.Bundle;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.WindowManager.LayoutParams;
+import android.widget.SearchView;
+
+/**
+ * This class is an Activity that knows how to set its orientation and theme (via intent
+ * extras being passed, as well as calling
+ * {@link ActivityTestInfo#modifyActivity(SnapshotActivity)} in order to
+ * perform some modification on the activity itself that is different for
+ * each test.
+ */
+public class SnapshotActivity extends Activity {
+    private int mActionItemState;
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        mActionItemState = -1;
+
+        updateWindowSize();
+
+        Intent intent = getIntent();
+
+        // set the orientation
+        int orientation = intent.getIntExtra(ThemeTests.EXTRA_ORIENTATION,
+                ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+
+        setRequestedOrientation(orientation);
+
+        // set the theme
+        int themeId = intent.getIntExtra(ThemeTests.EXTRA_THEME_ID, 0);
+
+        setTheme(themeId);
+
+        setContentView(R.layout.empty);
+
+        int testIndex = intent.getIntExtra(ThemeTests.EXTRA_ACTIVITY_TEST_INDEX, -1);
+
+        if (testIndex < 0) {
+            return;
+        }
+
+        // modify the Activity in some way
+        ThemeTests.getActivityTests()[testIndex].modifyActivity(this);
+    }
+
+    @Override
+    public void onConfigurationChanged(Configuration newConfig) {
+        super.onConfigurationChanged(newConfig);
+
+        updateWindowSize();
+    }
+
+    public void updateWindowSize() {
+        Resources resources = getResources();
+
+        // set the window to a known size so that we don't have issues with different
+        // screen sizes
+        int referenceWidthDp = resources.getDimensionPixelSize(R.dimen.reference_width);
+        int referenceHeightDp = resources.getDimensionPixelSize(R.dimen.reference_height);
+
+        LayoutParams attrs = getWindow().getAttributes();
+
+        // set layout when the orientation has changed
+        if (attrs.width != referenceWidthDp || attrs.height != referenceHeightDp) {
+            getWindow().setLayout(referenceWidthDp, referenceHeightDp);
+        }
+    }
+
+    /**
+     * Returns a {@link Bitmap} of the Activity's decor view.
+     * @return A {@link Bitmap} of the Activity's decor view.
+     */
+    public Bitmap getBitmapOfWindow() {
+        View decorView = getWindow().getDecorView();
+
+        decorView.setFocusable(false);
+
+        Bitmap bitmap = Bitmap.createBitmap(
+                decorView.getWidth(), decorView.getHeight(), Bitmap.Config.ARGB_8888);
+
+        Canvas canvas = new Canvas(bitmap);
+        decorView.draw(canvas);
+
+        return bitmap;
+    }
+
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        MenuItem actionItem;
+        SearchView searchView;
+        switch (mActionItemState) {
+            case ActionBarModifier.ACTION_ITEMS:
+                actionItem = menu.add("Share").setIcon(android.R.drawable.ic_menu_share);
+                actionItem.setShowAsAction(
+                        MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
+
+                actionItem = menu.add("Add").setIcon(android.R.drawable.ic_menu_add);
+                actionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+
+                actionItem = menu.add("Save").setIcon(android.R.drawable.ic_menu_save);
+                actionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM);
+
+                return true;
+            case ActionBarModifier.ACTION_VIEW:
+                getMenuInflater().inflate(R.menu.menu_searchview, menu);
+                searchView
+                        = (SearchView) menu.findItem(R.id.menu_search).getActionView();
+                searchView.setIconifiedByDefault(false);
+                return super.onCreateOptionsMenu(menu);
+            case ActionBarModifier.COLLAPSED_ACTION_VIEW: // TODO - fix this test: currently broken
+                getMenuInflater().inflate(R.menu.menu_searchview, menu);
+                actionItem = menu.findItem(R.id.menu_search);
+                actionItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
+                searchView = (SearchView) actionItem.getActionView();
+                searchView.setFocusable(false);
+                actionItem.expandActionView();
+                return super.onCreateOptionsMenu(menu);
+            default:
+                return false;
+        }
+    }
+
+    /**
+     * Sets the actionItemState that will be used to figure out how to
+     * modify the {@link ActionBar}'s action items in {@link Activity#onCreateOptionsMenu}.
+     * @param actionItemState The actionItemState to use. Corrensponds to the public
+     * constants in {@link ActionBarModifier}.
+     */
+    public void setActionItemState(int actionItemState) {
+        mActionItemState = actionItemState;
+    }
+}
diff --git a/tests/src/android/theme/cts/SplitSnapshotActivity.java b/tests/src/android/theme/cts/SplitSnapshotActivity.java
new file mode 100644
index 0000000..f97c638
--- /dev/null
+++ b/tests/src/android/theme/cts/SplitSnapshotActivity.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+/**
+ * This class is a stub so that we can run the Activity tests using the
+ * uiOption SplitActionBarWhenNarrow. Its implementation is deliberately empty
+ * since it is supposed to run the same tests as those carried out by its
+ * base class {@link SnapshotActivity}. Changes to the tests, if necessary,
+ * should be carried out there.
+ */
+public class SplitSnapshotActivity extends SnapshotActivity {
+    // EMPTY BY DESIGN
+}
diff --git a/tests/src/android/theme/cts/TabHostModifier.java b/tests/src/android/theme/cts/TabHostModifier.java
new file mode 100644
index 0000000..86197f5
--- /dev/null
+++ b/tests/src/android/theme/cts/TabHostModifier.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import com.android.cts.stub.R;
+
+import android.view.View;
+import android.widget.TabHost;
+
+/**
+ * Modifies {@link TabHost} widget for use in testing.
+ */
+public class TabHostModifier implements ThemeTestModifier {
+
+    @Override
+    public View modifyView(View view) {
+        TabHost tabHost = (TabHost) view;
+        tabHost.setup();
+        TabHost.TabSpec spec;  // Reusable TabSpec for each tab
+
+        // Initialize a TabSpec for each tab and add it to the TabHost
+        spec = tabHost.newTabSpec("artists").setIndicator("Artists").setContent(R.id.tabInnerView);
+        tabHost.addTab(spec);
+
+        // Do the same for the other tabs
+        spec = tabHost.newTabSpec("albums").setIndicator("Albums").setContent(R.id.tabInnerView);
+        tabHost.addTab(spec);
+
+        spec = tabHost.newTabSpec("songs").setIndicator("Songs").setContent(R.id.tabInnerView);
+        tabHost.addTab(spec);
+
+        tabHost.setCurrentTab(2);
+
+        return view;
+    }
+}
diff --git a/tests/src/android/theme/cts/TestListActivity.java b/tests/src/android/theme/cts/TestListActivity.java
new file mode 100644
index 0000000..380adab
--- /dev/null
+++ b/tests/src/android/theme/cts/TestListActivity.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import com.android.cts.stub.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.AdapterView.OnItemClickListener;
+import android.widget.ListView;
+
+import junit.framework.Assert;
+
+/**
+ * Exists for debugging purposes. Allows the manual verifier
+ * to select which test to look at. Displays a list of all of the
+ * tests. Selecting one shows the reference and generated images
+ * for that specific test.
+ */
+public class TestListActivity extends Activity {
+    private int mThemeId;
+    private String mThemeName;
+    private int mOrientation;
+
+    /**
+     * Called with the activity is first created.
+     */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        Intent intent = getIntent();
+        mThemeId = intent.getIntExtra(ThemeTests.EXTRA_THEME_ID, 0);
+
+        // test should fail if no theme is set
+        Assert.assertTrue("No Theme Resource ID set", mThemeId != 0);
+
+        mThemeName = intent.getStringExtra(ThemeTests.EXTRA_THEME_NAME);
+
+        setTheme(mThemeId);
+
+        setContentView(R.layout.themetestlistactivity);
+
+        ListView lv = (ListView) findViewById(R.id.tests_list);
+        lv.setAdapter(new ThemeTestAdapter(this, ThemeTests.getTests()));
+
+        lv.setOnItemClickListener(mTestClickedListener);
+
+        mOrientation = intent.getIntExtra(ThemeTests.EXTRA_ORIENTATION,
+                ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+    }
+
+    private OnItemClickListener mTestClickedListener = new OnItemClickListener() {
+        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+            Intent intent = new Intent(TestListActivity.this, ThemeTestRunnerActivity.class);
+            intent.putExtra(ThemeTests.EXTRA_THEME_ID, mThemeId);
+            intent.putExtra(ThemeTests.EXTRA_THEME_NAME, mThemeName);
+            intent.putExtra(ThemeTests.EXTRA_RUN_INDIVIDUAL_TEST, position);
+            intent.putExtra(ThemeTests.EXTRA_ORIENTATION, mOrientation);
+            startActivity(intent);
+        }
+    };
+}
diff --git a/tests/src/android/theme/cts/TestReset.java b/tests/src/android/theme/cts/TestReset.java
new file mode 100644
index 0000000..78e0fa0
--- /dev/null
+++ b/tests/src/android/theme/cts/TestReset.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+/**
+ * This interface exists for the sole purpose of separating the
+ * {@link ActivityInstrumentationTestCase2} that runs the activity
+ * screenshot tests from the actual code. In order to work properly
+ * with multiple activities, the {@link ActivityInstrumentationTestCase2}
+ * must {@link ActivityInstrumentationTestCase2#tearDown} and
+ * {@link ActivityInstrumentationTestCase2#setUp} itself after
+ * each test. Since those methods are protected, this interface
+ * serves as a way to implement that functionality while allowing
+ * two separate {@link ActivityInstrumentationTestCase2}s to exist,
+ * one for the regular activity screenshot tests and the other one for
+ * the while sharing code between both for most of the test framework.
+ */
+public interface TestReset {
+    public void reset();
+}
diff --git a/tests/src/android/theme/cts/TesterViewGroup.java b/tests/src/android/theme/cts/TesterViewGroup.java
new file mode 100644
index 0000000..aa42724
--- /dev/null
+++ b/tests/src/android/theme/cts/TesterViewGroup.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import com.android.cts.stub.R;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.ViewGroup;
+
+/**
+ * Custom view group to handle density changes while maintaining screen independence.
+ */
+public class TesterViewGroup extends ViewGroup {
+    private int mReferenceWidthDp;
+    private int mReferenceHeightDp;
+
+    public TesterViewGroup(Context context) {
+        this(context, null);
+    }
+
+    public TesterViewGroup(Context context, AttributeSet attrs) {
+        super(context, attrs);
+
+        Resources resources = context.getResources();
+
+        mReferenceWidthDp = resources.getDimensionPixelSize(R.dimen.reference_width);
+        mReferenceHeightDp = resources.getDimensionPixelSize(R.dimen.reference_height);
+    }
+
+    @Override
+    protected void onLayout(boolean changed, int l, int t, int r, int b) {
+        if (!changed) {
+            return;
+        }
+
+        int childCount = getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            View child = getChildAt(i);
+            child.layout(0, 0, child.getMeasuredWidth(), child.getMeasuredHeight());
+        }
+    }
+
+    @Override
+    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
+        widthMeasureSpec = getMeasureSpec(LayoutParams.MATCH_PARENT, mReferenceWidthDp);
+        heightMeasureSpec = getMeasureSpec(LayoutParams.MATCH_PARENT, mReferenceHeightDp);
+
+        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
+
+        int childCount = getChildCount();
+        for (int i = 0; i < childCount; i++) {
+            View child = getChildAt(i);
+
+            LayoutParams params = child.getLayoutParams();
+
+            int height = getMeasureSpec(params.height, mReferenceWidthDp);
+            int width = getMeasureSpec(params.width, mReferenceHeightDp);
+            child.measure(width, height);
+        }
+    }
+
+    private int getMeasureSpec(int val, int referenceSize) {
+        if (val == LayoutParams.MATCH_PARENT) {
+            return MeasureSpec.makeMeasureSpec(referenceSize, MeasureSpec.EXACTLY);
+        } else if (val == LayoutParams.WRAP_CONTENT) {
+            return MeasureSpec.makeMeasureSpec(referenceSize, MeasureSpec.AT_MOST);
+        } else {
+            return val;
+        }
+    }
+}
diff --git a/tests/src/android/theme/cts/ThemeInfo.java b/tests/src/android/theme/cts/ThemeInfo.java
new file mode 100644
index 0000000..a2556e0
--- /dev/null
+++ b/tests/src/android/theme/cts/ThemeInfo.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+public class ThemeInfo {
+    private int mResourceId;
+    private String mThemeName;
+
+    public ThemeInfo(int resourceId, String themeName) {
+        mResourceId = resourceId;
+        mThemeName = themeName;
+    }
+
+    public int getResourceId() {
+        return mResourceId;
+    }
+
+    public String getThemeName() {
+        return mThemeName;
+    }
+}
diff --git a/tests/src/android/theme/cts/ThemeSelectorActivity.java b/tests/src/android/theme/cts/ThemeSelectorActivity.java
new file mode 100644
index 0000000..d9c05d6
--- /dev/null
+++ b/tests/src/android/theme/cts/ThemeSelectorActivity.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import com.android.cts.stub.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.os.Bundle;
+import android.view.View;
+import android.widget.AdapterView;
+import android.widget.ListView;
+import android.widget.AdapterView.OnItemClickListener;
+
+/**
+ * This activity exists solely for debugging purposes. It allows the manual
+ * verifier to select which theme to test.
+ */
+public class ThemeSelectorActivity extends Activity {
+    private ThemeInfo[] mThemes;
+    private int mOrientation;
+    /**
+     * Called with the activity is first created.
+     */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.themetestlistactivity);
+
+        ListView lv = (ListView) findViewById(R.id.tests_list);
+
+        mThemes = ThemeTests.getThemes();
+        lv.setAdapter(new ThemesAdapter(this, mThemes));
+
+        lv.setOnItemClickListener(mTestClickedListener);
+
+        mOrientation = getIntent().getIntExtra(ThemeTests.EXTRA_ORIENTATION,
+                ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+    }
+
+    private OnItemClickListener mTestClickedListener = new OnItemClickListener() {
+        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
+            Intent intent = new Intent(ThemeSelectorActivity.this, TestListActivity.class);
+            ThemeInfo theme = mThemes[position];
+            intent.putExtra(ThemeTests.EXTRA_THEME_ID, theme.getResourceId());
+            intent.putExtra(ThemeTests.EXTRA_THEME_NAME, theme.getThemeName());
+            intent.putExtra(ThemeTests.EXTRA_ORIENTATION, mOrientation);
+            startActivity(intent);
+        }
+    };
+}
diff --git a/tests/src/android/theme/cts/ThemeTestAdapter.java b/tests/src/android/theme/cts/ThemeTestAdapter.java
new file mode 100644
index 0000000..2172d24
--- /dev/null
+++ b/tests/src/android/theme/cts/ThemeTestAdapter.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.app.Activity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+public class ThemeTestAdapter extends BaseAdapter {
+    private LayoutInflater mInflater;
+    private ThemeTestInfo[] mTests;
+
+    public ThemeTestAdapter(Activity activity, ThemeTestInfo[] tests) {
+        mTests = tests;
+        mInflater = activity.getLayoutInflater();
+    }
+
+    @Override
+    public int getCount() {
+        return mTests.length;
+    }
+
+    @Override
+    public Object getItem(int position) {
+        return mTests[position];
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        if (convertView == null) {
+            convertView = mInflater.inflate(android.R.layout.simple_list_item_1, parent, false);
+        }
+
+        ((TextView) convertView).setText(mTests[position].getTestName());
+
+        return convertView;
+    }
+}
diff --git a/tests/src/android/theme/cts/ThemeTestGeneratorActivity.java b/tests/src/android/theme/cts/ThemeTestGeneratorActivity.java
new file mode 100644
index 0000000..f770b5a
--- /dev/null
+++ b/tests/src/android/theme/cts/ThemeTestGeneratorActivity.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import com.android.cts.stub.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.os.Bundle;
+
+import junit.framework.Assert;
+
+/**
+ * Generates the master bitmaps for all of the tests for the specific
+ * theme and orientation requested via the intent.
+ */
+public class ThemeTestGeneratorActivity extends Activity {
+    private ThemeTester mTester;
+
+    /**
+     * Called with the activity is first created.
+     */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        Intent intent = getIntent();
+        int themeId = intent.getIntExtra(ThemeTests.EXTRA_THEME_ID, 0);
+
+        // test should fail if no theme is set
+        Assert.assertTrue("No Theme Resource ID set", themeId != 0);
+
+        String themeName = intent.getStringExtra(ThemeTests.EXTRA_THEME_NAME);
+
+        setTheme(themeId);
+        setContentView(R.layout.testing_activity);
+
+        int orientation = intent.getIntExtra(ThemeTests.EXTRA_ORIENTATION,
+                ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+
+        setRequestedOrientation(orientation);
+
+        String oriented = "";
+        if (orientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
+            oriented = "land";
+        } else if (orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
+            oriented = "port";
+        }
+
+        mTester = new ThemeTester(this, themeName + "_" + oriented);
+    }
+
+    public void generateTests() {
+        mTester.generateTests();
+    }
+}
diff --git a/tests/src/android/theme/cts/ThemeTestInfo.java b/tests/src/android/theme/cts/ThemeTestInfo.java
new file mode 100644
index 0000000..eb28299
--- /dev/null
+++ b/tests/src/android/theme/cts/ThemeTestInfo.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+/**
+ * Class that represents a test case. Add a new one to the list of tests in ThemeTests.java
+ * in order to create a new test.
+ */
+public class ThemeTestInfo {
+    private int mResourceId;
+    private ThemeTestModifier mModifier;
+    private String mTestname;
+
+    /**
+     * Creates a new theme test.
+     * @param layoutResourceId The resource ID of the layout to use for this test.
+     * @param modifier The {@link ThemeTestModifier} to use in order to modify the layout
+     * of the test.
+     * @param testname The UNIQUE name of the test.
+     */
+    public ThemeTestInfo(int layoutResourceId, ThemeTestModifier modifier, String testname) {
+        mResourceId = layoutResourceId;
+        mModifier = modifier;
+        mTestname = testname;
+    }
+
+    public int getLayoutResourceId() {
+        return mResourceId;
+    }
+
+    public ThemeTestModifier getThemeModifier() {
+        return mModifier;
+    }
+
+    public String getTestName() {
+        return mTestname;
+    }
+}
diff --git a/tests/src/android/theme/cts/ThemeTestModifier.java b/tests/src/android/theme/cts/ThemeTestModifier.java
new file mode 100644
index 0000000..b5e3345
--- /dev/null
+++ b/tests/src/android/theme/cts/ThemeTestModifier.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.view.View;
+
+/**
+ * Interface that should be implemented if you want to modify the view being tested.
+ *
+ * For a sample implementation, see {@link ViewPressedModifier}.
+ */
+public interface ThemeTestModifier {
+    /**
+     * Define this function in order to modify the layout for your test.
+     * The View that is passed in is the root of layout that is specified in the test.
+     * @param view The root view of the layout.
+     * @return The view that will be saved as a bitmap. This view does not necessarily
+     * have to be the view that was passed into modifyView, however most implementations
+     * probably will return the original view.
+     */
+    public View modifyView(View view);
+}
diff --git a/tests/src/android/theme/cts/ThemeTestRunnerActivity.java b/tests/src/android/theme/cts/ThemeTestRunnerActivity.java
new file mode 100644
index 0000000..d337231
--- /dev/null
+++ b/tests/src/android/theme/cts/ThemeTestRunnerActivity.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import com.android.cts.stub.R;
+
+import android.app.Activity;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.os.Bundle;
+
+import junit.framework.Assert;
+
+/**
+ * Builds the bitmaps for all of the tests on the fly and
+ * compares them to the known master versions.
+ */
+public class ThemeTestRunnerActivity extends Activity {
+    private ThemeTester mTester;
+    /**
+     * Called with the activity is first created.
+     */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        Intent intent = getIntent();
+        int themeId = intent.getIntExtra(ThemeTests.EXTRA_THEME_ID, 0);
+
+        // test should fail if no theme is set
+        Assert.assertTrue("No Theme Resource ID set", themeId != 0);
+
+        String themeName = intent.getStringExtra(ThemeTests.EXTRA_THEME_NAME);
+
+        setTheme(themeId);
+        setContentView(R.layout.testing_activity);
+
+        int orientation = intent.getIntExtra(ThemeTests.EXTRA_ORIENTATION,
+                ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
+
+        setRequestedOrientation(orientation);
+
+        String oriented = "";
+        if (orientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) {
+            oriented = "land";
+        } else if (orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
+            oriented = "port";
+        }
+
+        mTester = new ThemeTester(this, themeName + "_" + oriented);
+
+        if (intent.getBooleanExtra(ThemeTests.EXTRA_RUN_TESTS, false)) {
+            mTester.runTests();
+        }
+
+        int position = intent.getIntExtra(ThemeTests.EXTRA_RUN_INDIVIDUAL_TEST, -1);
+        if (position != -1) {
+            mTester.setShouldAssert(false);
+            mTester.runTest(position);
+        }
+    }
+
+    /**
+     * Runs the theme tests for the theme that was created.
+     */
+    public void runTests() {
+        mTester.runTests();
+    }
+}
diff --git a/tests/src/android/theme/cts/ThemeTester.java b/tests/src/android/theme/cts/ThemeTester.java
new file mode 100644
index 0000000..d5cbf7e
--- /dev/null
+++ b/tests/src/android/theme/cts/ThemeTester.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import com.android.cts.stub.R;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.res.Resources;
+import android.content.res.Resources.NotFoundException;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.drawable.BitmapDrawable;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+
+import junit.framework.Assert;
+
+/**
+ * This class runs the series of tests for a specific theme in the activity.
+ *
+ * <p>
+ * Additionally, this class can also generate the good versions of bitmaps to use for testing.
+ */
+public class ThemeTester {
+    private Activity mActivity;
+    private String mThemeName;
+    private ImageView mReferenceImage;
+    private ImageView mGeneratedImage;
+    private TesterViewGroup mRoot;
+    private boolean mShouldAssert;
+
+    /**
+     * Creates a ThemeTester to run all of the tests.
+     * @param activity Activity that serves as a test harness for this theme test.
+     * @param themeName Name of the theme being tested.
+     */
+    public ThemeTester(Activity activity, String themeName) {
+        mActivity = activity;
+        mThemeName = themeName;
+        mRoot = (TesterViewGroup) mActivity.findViewById(R.id.test_group);
+        mShouldAssert = true;
+
+        mReferenceImage = (ImageView) mActivity.findViewById(R.id.reference_image);
+        mGeneratedImage = (ImageView) mActivity.findViewById(R.id.generated_image);
+    }
+
+    public void setShouldAssert(boolean shouldAssert) {
+        mShouldAssert = shouldAssert;
+    }
+
+    /**
+     * Run all of the tests.
+     */
+    public void runTests() {
+        ThemeTestInfo[] tests = ThemeTests.getTests();
+        for (final ThemeTestInfo test : tests) {
+            runTest(test);
+        }
+    }
+
+    /**
+     * Run an individual test based upon its position in the tests.
+     * @param position The position of the test that you wish to run.
+     */
+    public void runTest(int position) {
+        runTest(ThemeTests.getTests()[position]);
+    }
+
+    /**
+     * Run an individual test.
+     * @param test The {@link ThemeTestInfo} to use for this test.
+     */
+    private void runTest(final ThemeTestInfo test) {
+        mRoot.post(new Runnable() {
+            public void run() {
+                testViewFromId(test);
+            }
+        });
+    }
+
+    /**
+     * Generate all of the tests, saving them to Bitmaps in the application's data folder.
+     */
+    public void generateTests() {
+        ThemeTestInfo[] tests = ThemeTests.getTests();
+        for (final ThemeTestInfo test : tests) {
+            mRoot.post(new Runnable() {
+                public void run() {
+                    generateViewFromId(test);
+                }
+            });
+        }
+    }
+
+    private void testViewFromId(ThemeTestInfo test) {
+        processBitmapFromViewId(test.getLayoutResourceId(), test.getThemeModifier(),
+                new BitmapComparer(mActivity, mReferenceImage,
+                        mThemeName + "_" + test.getTestName(), mShouldAssert, false));
+    }
+
+    private void generateViewFromId(ThemeTestInfo test) {
+        processBitmapFromViewId(test.getLayoutResourceId(), test.getThemeModifier(),
+                new BitmapSaver(mActivity, mThemeName + "_" + test.getTestName(), false));
+    }
+
+    private void processBitmapFromViewId(
+            int resid, ThemeTestModifier modifier, final BitmapProcessor processor) {
+        final View view = constructViewFromLayoutId(resid, modifier);
+
+        view.post(new Runnable() {
+            public void run() {
+                Bitmap bitmap = Bitmap.createBitmap(
+                        view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888);
+
+                Canvas canvas = new Canvas(bitmap);
+                view.draw(canvas);
+                mGeneratedImage.setImageBitmap(bitmap);
+
+                processor.processBitmap(bitmap);
+
+                mRoot.removeView(view);
+            }
+        });
+    }
+
+    /**
+     * Inflates and returns the view and performs and modifications of it as required by the test.
+     * @param resid The resource id of the layout that will be constructed.
+     * @param modifier The ThemeTestModifier to modify the layout being tested.
+     * @return The root view of the layout being tested.
+     */
+    private View constructViewFromLayoutId(int resid, ThemeTestModifier modifier) {
+        LayoutInflater inflater = LayoutInflater.from(mActivity);
+
+        View view = inflater.inflate(resid, mRoot, false);
+        mRoot.addView(view);
+
+        if (modifier != null) {
+            view = modifier.modifyView(view);
+        }
+
+        mRoot.measure(0, 0); // don't care about the input values - we build our reference size
+        mRoot.layout(0, 0, mRoot.getMeasuredWidth(), mRoot.getMeasuredHeight());
+
+        view.setFocusable(false);
+
+        return view;
+    }
+
+
+
+
+}
diff --git a/tests/src/android/theme/cts/ThemeTests.java b/tests/src/android/theme/cts/ThemeTests.java
new file mode 100644
index 0000000..e76c603
--- /dev/null
+++ b/tests/src/android/theme/cts/ThemeTests.java
@@ -0,0 +1,261 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import com.android.cts.stub.R;
+
+import android.content.pm.ActivityInfo;
+
+public class ThemeTests {
+    /**
+     * Theme name to test.
+     */
+    public static final String EXTRA_THEME_NAME = "android.intent.extra.THEME_NAME";
+
+    /**
+     * Theme ID to test.
+     */
+    public static final String EXTRA_THEME_ID = "android.intent.extra.THEME_ID";
+
+    /**
+     * Runs only the test supplied (by position number).
+     */
+    public static final String EXTRA_RUN_INDIVIDUAL_TEST
+            = "android.intent.extra.RUN_INDIVIDUAL_TEST";
+
+    /**
+     * Use solely for debugging. The actual intent that runs the tests will not have this flag.
+     */
+    public static final String EXTRA_RUN_TESTS = "android.intent.extra.RUN_TESTS";
+
+    /**
+     * Sets the orientation of the tests. Options are
+     * {@link ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE} or
+     * {@link ActivityInfo.SCREEN_ORIENTATION_PORTRAIT}.
+     */
+    public static final String EXTRA_ORIENTATION = "android.intent.extra.ORIENTATION";
+
+    /**
+     * The index of the current activity test that is being run so that it can be
+     * read on both sides of an intent.
+     */
+    public static final String EXTRA_ACTIVITY_TEST_INDEX
+            = "android.intent.extra.ACTIVITY_TEST_INDEX";
+
+    /**
+     * The list of tests to run for each theme.<p>
+     * In order to create a new test, follow these steps.<p>
+     * 1. Create a layout file for the test you wish to run.<br>
+     * 2. (Optional) Create a class that derives from ThemeTestModifier
+     * that will modify the root view of your created layout. Set to null if you do not want
+     * to modify the view from the layout version.<br>
+     * 3. Create a unique String for the name of the test.<br>
+     * 4. Add all of the above to the list of tests. as a new {@link ThemeTestInfo}.
+     */
+    private static final ThemeTestInfo[] TESTS = new ThemeTestInfo[] {
+            new ThemeTestInfo(R.layout.button, null, "button"),
+            new ThemeTestInfo(R.layout.button, new ViewPressedModifier(), "button_pressed"),
+            new ThemeTestInfo(R.layout.toggle_button, null, "toggle_button"),
+            new ThemeTestInfo(R.layout.toggle_button_checked, null, "toggle_button_checked"),
+            new ThemeTestInfo(R.layout.checkbox, null, "checkbox"),
+            new ThemeTestInfo(R.layout.checkbox_checked, null, "checkbox_checked"),
+            new ThemeTestInfo(R.layout.radiobutton, null, "radiobutton"),
+            new ThemeTestInfo(R.layout.radiobutton_checked, null, "radiobutton_checked"),
+            new ThemeTestInfo(R.layout.spinner, null, "spinner"),
+            new ThemeTestInfo(R.layout.progressbar, null, "progressbar"),
+            new ThemeTestInfo(R.layout.progressbar_small, null, "progressbar_small"),
+            new ThemeTestInfo(R.layout.progressbar_large, null, "progressbar_large"),
+            new ThemeTestInfo(R.layout.progressbar_horizontal0, null, "progressbar_horizontal0"),
+            new ThemeTestInfo(R.layout.progressbar_horizontal50, null, "progressbar_horizontal50"),
+            new ThemeTestInfo(R.layout.progressbar_horizontal100,
+                    null, "progressbar_horizontal100"),
+            new ThemeTestInfo(R.layout.seekbar_0, null, "seekbar_0"),
+            new ThemeTestInfo(R.layout.seekbar_50, null, "seekbar_50"),
+            new ThemeTestInfo(R.layout.seekbar_100, null, "seekbar_100"),
+            new ThemeTestInfo(R.layout.radiogroup_vertical, null, "radiogroup_vertical"),
+            new ThemeTestInfo(R.layout.radiogroup_horizontal, null, "radiogroup_horizontal"),
+            new ThemeTestInfo(R.layout.ratingbar_0, null, "ratingbar_0"),
+            new ThemeTestInfo(R.layout.ratingbar_2point5, null, "ratingbar_2point5"),
+            new ThemeTestInfo(R.layout.ratingbar_5, null, "ratingbar_5"),
+            new ThemeTestInfo(R.layout.ratingbar_0,
+                    new ViewPressedModifier(), "ratingbar_0_pressed"),
+            new ThemeTestInfo(R.layout.ratingbar_2point5,
+                    new ViewPressedModifier(),"ratingbar_2point5_pressed"),
+            new ThemeTestInfo(R.layout.ratingbar_5,
+                    new ViewPressedModifier(), "ratingbar_5_pressed"),
+            new ThemeTestInfo(R.layout.textview, null, "textview"),
+            new ThemeTestInfo(R.layout.blue_light, null, "blue_light"),
+            new ThemeTestInfo(R.layout.green_light, null, "green_light"),
+            new ThemeTestInfo(R.layout.red_light, null, "red_light"),
+            new ThemeTestInfo(R.layout.blue_dark, null, "blue_dark"),
+            new ThemeTestInfo(R.layout.green_dark, null, "green_dark"),
+            new ThemeTestInfo(R.layout.red_dark, null, "red_dark"),
+            new ThemeTestInfo(R.layout.purple, null, "purple"),
+            new ThemeTestInfo(R.layout.orange_light, null, "orange_light"),
+            new ThemeTestInfo(R.layout.orange_dark, null, "orange_dark"),
+            new ThemeTestInfo(R.layout.blue_bright, null, "blue_bright"),
+            new ThemeTestInfo(R.layout.edittext, null, "edittext"),
+            new ThemeTestInfo(R.layout.calendarview, new CalendarViewModifier(), "calendarview"),
+            new ThemeTestInfo(R.layout.zoomcontrols, null, "zoomcontrols"),
+            new ThemeTestInfo(R.layout.tabhost, new TabHostModifier(), "tabhost"),
+            new ThemeTestInfo(R.layout.empty,
+                    new DialogModifier(
+                            new AlertDialogBuilder(
+                                    AlertDialogBuilder.ONE_BUTTON)), "alertdialog_onebutton"),
+            new ThemeTestInfo(R.layout.empty,
+                    new DialogModifier(
+                            new AlertDialogBuilder(
+                                    AlertDialogBuilder.TWO_BUTTONS)), "alertdialog_twobuttons"),
+            new ThemeTestInfo(R.layout.empty,
+                    new DialogModifier(
+                            new AlertDialogBuilder(
+                                    AlertDialogBuilder.THREE_BUTTONS)), "alertdialog_threebuttons"),
+            new ThemeTestInfo(R.layout.empty,
+                    new DialogModifier(
+                            new AlertDialogBuilder(
+                                    AlertDialogBuilder.LIST)), "alertdialog_list"),
+            new ThemeTestInfo(R.layout.empty,
+                    new DialogModifier(
+                            new AlertDialogBuilder(
+                                    AlertDialogBuilder.SINGLE_CHOICE)), "alertdialog_singlechoice"),
+            new ThemeTestInfo(R.layout.empty,
+                    new DialogModifier(
+                            new AlertDialogBuilder(
+                                    AlertDialogBuilder.MULTI_CHOICE)), "alertdialog_multichoice"),
+            new ThemeTestInfo(R.layout.empty,
+                    new DialogModifier(
+                            new ProgressDialogBuilder(
+                                    ProgressDialogBuilder.SPINNER)), "progressdialog_spinner"),
+            new ThemeTestInfo(R.layout.empty,
+                    new DialogModifier(
+                            new ProgressDialogBuilder(
+                                    ProgressDialogBuilder.HORIZONTAL)),
+                                    "progressdialog_horizontal"),
+            new ThemeTestInfo(R.layout.searchview, null, "searchview"),
+            new ThemeTestInfo(R.layout.searchview,
+                    new SearchViewModifier(SearchViewModifier.QUERY_HINT),
+                    "searchview_queryhint"),
+            new ThemeTestInfo(R.layout.searchview,
+                    new SearchViewModifier(SearchViewModifier.QUERY),
+                    "searchview_query")};
+
+    /**
+     * Returns the list of tests to run on a particular theme. <p>
+     *
+     * In order to create a new test, follow these steps.<p>
+     * 1. Create a layout file for the test you wish to run.<br>
+     * 2. (Optional) Create a class that derives from ThemeTestModifier
+     * that will modify the root view of your created layout. Set to null if you do not want
+     * to modify the view from the layout version.<br>
+     * 3. Create a unique String for the name of the test.<br>
+     * 4. Add all of the above to the list of tests. as a new {@link ThemeTestInfo}.
+     * @return The list of tests.
+     */
+    public static ThemeTestInfo[] getTests() {
+        return TESTS;
+    }
+
+    /**
+     * The list of themes to test. In order to add a new theme, follow these steps.<p>
+     * 1. Add a new Theme to the array of Themes in
+     * cts/tests/src/android/theme/cts/ThemeTests.java.
+     * Make sure the "theme name" String is unique.<br>
+     * 2. There is no step 2. You're done. Congrats.
+     */
+    private static final ThemeInfo[] THEMES = new ThemeInfo[] {
+        new ThemeInfo(android.R.style.Theme_Holo, "holo"),
+        new ThemeInfo(android.R.style.Theme_Holo_Dialog, "holo_dialog"),
+        new ThemeInfo(android.R.style.Theme_Holo_Dialog_MinWidth, "holo_dialog_minwidth"),
+        new ThemeInfo(android.R.style.Theme_Holo_Dialog_NoActionBar,
+                "holo_dialog_noactionbar"),
+        new ThemeInfo(android.R.style.Theme_Holo_Dialog_NoActionBar_MinWidth,
+                "holo_dialog_noactionbar_minwidth"),
+        new ThemeInfo(android.R.style.Theme_Holo_DialogWhenLarge, "holo_dialogwhenlarge"),
+        new ThemeInfo(android.R.style.Theme_Holo_DialogWhenLarge_NoActionBar,
+                "holo_dialogwhenlarge_noactionbar"),
+        new ThemeInfo(android.R.style.Theme_Holo_InputMethod, "holo_inputmethod"),
+        new ThemeInfo(android.R.style.Theme_Holo_Light, "holo_light"),
+        new ThemeInfo(android.R.style.Theme_Holo_Light_DarkActionBar, "holo_light_darkactionbar"),
+        new ThemeInfo(android.R.style.Theme_Holo_Light_Dialog, "holo_light_dialog"),
+        new ThemeInfo(android.R.style.Theme_Holo_Light_Dialog_MinWidth,
+                "holo_light_dialog_minwidth"),
+        new ThemeInfo(android.R.style.Theme_Holo_Light_Dialog_NoActionBar,
+                "holo_light_dialog_noactionbar"),
+        new ThemeInfo(android.R.style.Theme_Holo_Light_Dialog_NoActionBar_MinWidth,
+                "holo_light_dialog_noactionbar_minwidth"),
+        new ThemeInfo(android.R.style.Theme_Holo_Light_DialogWhenLarge,
+                "holo_light_dialogwhenlarge"),
+        new ThemeInfo(android.R.style.Theme_Holo_Light_DialogWhenLarge_NoActionBar,
+                "holo_light_dialogwhenlarge_noactionbar"),
+        new ThemeInfo(android.R.style.Theme_Holo_Light_NoActionBar, "holo_light_noactionbar"),
+        new ThemeInfo(android.R.style.Theme_Holo_Light_NoActionBar_Fullscreen,
+                "holo_light_noactionbar_fullscreen"),
+        new ThemeInfo(android.R.style.Theme_Holo_Light_Panel, "holo_light_panel"),
+        new ThemeInfo(android.R.style.Theme_Holo_NoActionBar, "holo_noactionbar"),
+        new ThemeInfo(android.R.style.Theme_Holo_NoActionBar_Fullscreen,
+                "holo_noactionbar_fullscreen"),
+        new ThemeInfo(android.R.style.Theme_Holo_Panel, "holo_panel"),
+        new ThemeInfo(android.R.style.Theme_Holo_Wallpaper, "holo_wallpaper"),
+        new ThemeInfo(android.R.style.Theme_Holo_Wallpaper_NoTitleBar, "holo_wallpaper_notitlebar")
+    };
+
+    /**
+     * Returns the list of themes to test. In order to add a new theme, follow these steps.<p>
+     * 1. Add a new Theme to the array of Themes in
+     * cts/tests/src/android/theme/cts/ThemeTests.java.
+     * Make sure the "theme name" String is unique.<br>
+     * 2. There is no step 2. You're done. Congrats.
+     * @return The list of themes.
+     */
+    public static ThemeInfo[] getThemes() {
+        return THEMES;
+    }
+
+    /**
+     * The list of Activity snapshot tests.<p>
+     * In order to create a new test, follow these steps.<p>
+     * 1. Create a class that inherits from {@link ActivitytestInfo}.<br>
+     * 2. Add an initialization of that class to the array below.<br>
+     * 3. Done.
+     */
+    private static final ActivityTestInfo[] ACTIVITY_TESTS = new ActivityTestInfo[] {
+        new ActionBarModifier("actionbar", ActionBarModifier.BASIC),
+        new ActionBarModifier("actionbar_home_as_up", ActionBarModifier.DISPLAY_HOME_AS_UP),
+        new ActionBarModifier("actionbar_tabs", ActionBarModifier.TABS),
+        new ActionBarModifier("actionbar_list", ActionBarModifier.LIST),
+        new ActionBarModifier("actionbar_no_title", ActionBarModifier.NO_TITLE),
+        new ActionBarModifier("actionbar_no_icon", ActionBarModifier.NO_ICON),
+        new ActionBarModifier("actionbar_action_items", ActionBarModifier.ACTION_ITEMS),
+        new ActionBarModifier("actionbar_action_view", ActionBarModifier.ACTION_VIEW)//,
+        // TODO - fix this test - I think this one is particularly susceptible
+        // to the orientation bug so for now i'm just leaving it commented out
+        /*new ActionBarModifier(
+                "actionbar_collapsed_action_view", ActionBarModifier.COLLAPSED_ACTION_VIEW)*/
+    };
+
+    /**
+     * Returns the list of Activity snapshot tests.<p>
+     * In order to create a new test, follow these steps.<p>
+     * 1. Create a class that inherits from {@link ActivitytestInfo}.<br>
+     * 2. Add an initialization of that class to the array below.<br>
+     * 3. Done.
+     * @return The list of Activity snapshot tests.
+     */
+    public static ActivityTestInfo[] getActivityTests() {
+        return ACTIVITY_TESTS;
+    }
+}
diff --git a/tests/src/android/theme/cts/ThemesAdapter.java b/tests/src/android/theme/cts/ThemesAdapter.java
new file mode 100644
index 0000000..15d535f
--- /dev/null
+++ b/tests/src/android/theme/cts/ThemesAdapter.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.app.Activity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.BaseAdapter;
+import android.widget.TextView;
+
+public class ThemesAdapter extends BaseAdapter {
+    private LayoutInflater mInflater;
+    private ThemeInfo[] mThemes;
+
+    public ThemesAdapter(Activity activity, ThemeInfo[] themes) {
+        mThemes = themes;
+        mInflater = activity.getLayoutInflater();
+    }
+
+    @Override
+    public int getCount() {
+        return mThemes.length;
+    }
+
+    @Override
+    public Object getItem(int position) {
+        return mThemes[position];
+    }
+
+    @Override
+    public long getItemId(int position) {
+        return position;
+    }
+
+    @Override
+    public View getView(int position, View convertView, ViewGroup parent) {
+        if (convertView == null) {
+            convertView = mInflater.inflate(android.R.layout.simple_list_item_1, parent, false);
+        }
+
+        ((TextView) convertView).setText(mThemes[position].getThemeName());
+
+        return convertView;
+    }
+
+}
diff --git a/tests/src/android/theme/cts/TimePickerModifier.java b/tests/src/android/theme/cts/TimePickerModifier.java
new file mode 100644
index 0000000..9a370fc
--- /dev/null
+++ b/tests/src/android/theme/cts/TimePickerModifier.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.view.View;
+import android.widget.TimePicker;
+
+/**
+ * Modifies the {@link TimePicker} widget to set a precise time.
+ */
+public class TimePickerModifier implements ThemeTestModifier {
+
+    @Override
+    public View modifyView(View view) {
+        TimePicker tp = (TimePicker) view;
+        tp.setCurrentHour(10);
+        tp.setCurrentMinute(40);
+
+        return view;
+    }
+}
diff --git a/tests/src/android/theme/cts/ViewPressedModifier.java b/tests/src/android/theme/cts/ViewPressedModifier.java
new file mode 100644
index 0000000..2330c82
--- /dev/null
+++ b/tests/src/android/theme/cts/ViewPressedModifier.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.view.View;
+
+/**
+ * Modifies the root view of a test so that it is in the pressed state.
+ */
+public class ViewPressedModifier implements ThemeTestModifier {
+
+    @Override
+    public View modifyView(View view) {
+        view.setPressed(true);
+        return view;
+    }
+}
diff --git a/tests/src/android/webkit/cts/CtsTestServer.java b/tests/src/android/webkit/cts/CtsTestServer.java
index f7a1ead..6d3bfe6 100755
--- a/tests/src/android/webkit/cts/CtsTestServer.java
+++ b/tests/src/android/webkit/cts/CtsTestServer.java
@@ -15,7 +15,7 @@
  */
 package android.webkit.cts;
 
-import org.apache.harmony.luni.util.Base64;
+import libcore.io.Base64;
 import org.apache.http.Header;
 import org.apache.http.HttpException;
 import org.apache.http.HttpRequest;
diff --git a/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityEndToEndTest.java b/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityEndToEndTest.java
index 07812b8..32276a8 100644
--- a/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityEndToEndTest.java
+++ b/tests/tests/accessibilityservice/src/android/accessibilityservice/cts/AccessibilityEndToEndTest.java
@@ -84,7 +84,7 @@
      * Timeout required for pending Binder calls or event processing to
      * complete.
      */
-    private static final long MAX_TIMEOUT_ASYNCHRONOUS_PROCESSING = 2000;
+    private static final long MAX_TIMEOUT_ASYNCHRONOUS_PROCESSING = 1000;
 
     /**
      * The count of the polling attempts during {@link #MAX_TIMEOUT_ASYNCHRONOUS_PROCESSING}
diff --git a/tests/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java b/tests/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java
index 5ff5e67..7b86be6 100644
--- a/tests/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java
+++ b/tests/tests/app/src/android/app/cts/ActivityManagerMemoryClassTest.java
@@ -89,7 +89,7 @@
             case DisplayMetrics.DENSITY_HIGH:
             case DisplayMetrics.DENSITY_XHIGH:
             case DENSITY_TV:
-                expectedMinimumMemory = isXLarge ? 48 : 32;
+                expectedMinimumMemory = isXLarge ? 48 : 48;
                 break;
 
             default:
diff --git a/tests/tests/bluetooth/src/android/bluetooth/cts/BasicAdapterTest.java b/tests/tests/bluetooth/src/android/bluetooth/cts/BasicAdapterTest.java
index 796298d..b0d3bf1 100644
--- a/tests/tests/bluetooth/src/android/bluetooth/cts/BasicAdapterTest.java
+++ b/tests/tests/bluetooth/src/android/bluetooth/cts/BasicAdapterTest.java
@@ -219,6 +219,7 @@
         assertTrue(adapter.isEnabled());
         adapter.disable();
         for (int i=0; i<DISABLE_TIMEOUT/POLL_TIME; i++) {
+            sleep(POLL_TIME);
             switch (adapter.getState()) {
             case BluetoothAdapter.STATE_OFF:
                 assertFalse(adapter.isEnabled());
@@ -228,7 +229,6 @@
                 assertFalse(adapter.isEnabled());
                 break;
             }
-            sleep(POLL_TIME);
         }
         fail("disable() timeout");
     }
@@ -247,6 +247,7 @@
         assertFalse(adapter.isEnabled());
         adapter.enable();
         for (int i=0; i<ENABLE_TIMEOUT/POLL_TIME; i++) {
+            sleep(POLL_TIME);
             switch (adapter.getState()) {
             case BluetoothAdapter.STATE_ON:
                 assertTrue(adapter.isEnabled());
@@ -256,7 +257,6 @@
                 assertFalse(adapter.isEnabled());
                 break;
             }
-            sleep(POLL_TIME);
         }
         fail("enable() timeout");
     }
diff --git a/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java b/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
index 57c5c31..a70138c 100644
--- a/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
+++ b/tests/tests/content/src/android/content/cts/AvailableIntentsTest.java
@@ -208,10 +208,7 @@
         assertCanBeHandled(new Intent(Settings.ACTION_APN_SETTINGS));
         assertCanBeHandled(new Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
                 .setData(Uri.parse("package:com.android.cts.stub")));
-
-        // TODO: Uncomment in HC. This appears to be broken in Froyo and Gingerbread...
-        // assertCanBeHandled(new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
-
+        assertCanBeHandled(new Intent(Settings.ACTION_APPLICATION_DEVELOPMENT_SETTINGS));
         assertCanBeHandled(new Intent(Settings.ACTION_APPLICATION_SETTINGS));
         assertCanBeHandled(new Intent(Settings.ACTION_BLUETOOTH_SETTINGS));
         assertCanBeHandled(new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS));
@@ -225,15 +222,9 @@
         assertCanBeHandled(new Intent(Settings.ACTION_MANAGE_ALL_APPLICATIONS_SETTINGS));
         assertCanBeHandled(new Intent(Settings.ACTION_MANAGE_APPLICATIONS_SETTINGS));
         assertCanBeHandled(new Intent(Settings.ACTION_MEMORY_CARD_SETTINGS));
-
-        // TODO: Seems to not work at on NS, Xoom, Xoom WiFi
-        // assertCanBeHandled(new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS));
-
+        assertCanBeHandled(new Intent(Settings.ACTION_NETWORK_OPERATOR_SETTINGS));
         assertCanBeHandled(new Intent(Settings.ACTION_PRIVACY_SETTINGS));
-
-        // TODO: Seems to not work at on NS, Xoom, Xoom WiFi
-        // assertCanBeHandled(new Intent(Settings.ACTION_QUICK_LAUNCH_SETTINGS));
-
+        assertCanBeHandled(new Intent(Settings.ACTION_QUICK_LAUNCH_SETTINGS));
         assertCanBeHandled(new Intent(Settings.ACTION_SEARCH_SETTINGS));
         assertCanBeHandled(new Intent(Settings.ACTION_SECURITY_SETTINGS));
         assertCanBeHandled(new Intent(Settings.ACTION_SETTINGS));
diff --git a/tests/tests/content/src/android/content/cts/ContentResolverSyncTestCase.java b/tests/tests/content/src/android/content/cts/ContentResolverSyncTestCase.java
index 2da0bfb..1cc4cfb 100644
--- a/tests/tests/content/src/android/content/cts/ContentResolverSyncTestCase.java
+++ b/tests/tests/content/src/android/content/cts/ContentResolverSyncTestCase.java
@@ -57,9 +57,6 @@
         // Need to clean up created account
         removeAccount(sAccountManager, ACCOUNT, null /* callback */);
 
-        // Need to cancel any sync that was started.
-        cancelSync(null, AUTHORITY, LATCH_TIMEOUT_MS);
-
         super.tearDown();
     }
 
@@ -90,8 +87,8 @@
     }
 
     private CountDownLatch setNewLatch(CountDownLatch latch) {
-        getMockSyncAdapter().clearData();
         getMockSyncAdapter().setLatch(latch);
+        getMockSyncAdapter().clearData();
         return latch;
     }
 
@@ -104,9 +101,7 @@
 
         // Wait with timeout for the callback to do its work
         try {
-            if (!latch.await(latchTimeoutMs, TimeUnit.MILLISECONDS)) {
-                fail("should not time out waiting on latch");
-            }
+            latch.await(latchTimeoutMs, TimeUnit.MILLISECONDS);
         } catch (InterruptedException e) {
             fail("should not throw an InterruptedException");
         }
diff --git a/tests/tests/content/src/android/content/pm/cts/SignatureTest.java b/tests/tests/content/src/android/content/pm/cts/SignatureTest.java
index 16e1027..6bd77dd 100644
--- a/tests/tests/content/src/android/content/pm/cts/SignatureTest.java
+++ b/tests/tests/content/src/android/content/pm/cts/SignatureTest.java
@@ -30,110 +30,138 @@
 @TestTargetClass(Signature.class)
 public class SignatureTest extends AndroidTestCase {
 
-    private static final String mSignatureString = "1234567890abcdef";
-    // mSignatureByteArray is the byte code of mSignatureString.
-    private static final byte[] mSignatureByteArray = { (byte) 0x12, (byte) 0x34, (byte) 0x56,
+    private static final String SIGNATURE_STRING = "1234567890abcdef";
+    // SIGNATURE_BYTE_ARRAY is the byte code of SIGNATURE_STRING.
+    private static final byte[] SIGNATURE_BYTE_ARRAY = { (byte) 0x12, (byte) 0x34, (byte) 0x56,
             (byte) 0x78, (byte) 0x90, (byte) 0xab, (byte) 0xcd, (byte) 0xef };
-    // mDiffByteArray has different content to mSignatureString.
-    private static final byte[] mDiffByteArray = { (byte) 0xfe, (byte) 0xdc, (byte) 0xba,
+    // DIFF_BYTE_ARRAY has different content to SIGNATURE_STRING.
+    private static final byte[] DIFF_BYTE_ARRAY = { (byte) 0xfe, (byte) 0xdc, (byte) 0xba,
             (byte) 0x09, (byte) 0x87, (byte) 0x65, (byte) 0x43, (byte) 0x21 };
 
-    @TestTargets({
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            notes = "Test constructor",
-            method = "Signature",
-            args = {byte[].class}
-        ),
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            notes = "Test constructor",
-            method = "Signature",
-            args = {java.lang.String.class}
-        ),
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            notes = "Test toByteArray",
-            method = "toByteArray",
-            args = {}
-        ),
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            notes = "Test toCharsString",
-            method = "toCharsString",
-            args = {}
-        ),
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            notes = "Test toChars",
-            method = "toChars",
-            args = {}
-        ),
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            notes = "Test toChars",
-            method = "toChars",
-            args = {char[].class, int[].class}
-        )
-    })
-    public void testSignature() {
-        Signature signature = new Signature(mSignatureString);
+    public void testSignatureStringConstructorValid() {
+        Signature signature = new Signature(SIGNATURE_STRING);
         byte[] actualByteArray = signature.toByteArray();
-        assertTrue(Arrays.equals(mSignatureByteArray, actualByteArray));
-
-        signature = new Signature(mSignatureByteArray);
-        String actualString = signature.toCharsString();
-        assertEquals(mSignatureString, actualString);
-
-        char[] charArray = signature.toChars();
-        actualString = new String(charArray);
-        assertEquals(mSignatureString, actualString);
-
-        char[] existingCharArray = new char[mSignatureString.length()];
-        int[] intArray = new int[1];
-        charArray = signature.toChars(existingCharArray, intArray);
-        actualString = new String(charArray);
-        assertEquals(mSignatureString, actualString);
-        // intArray[0] represents the length of array.
-        assertEquals(intArray[0], mSignatureByteArray.length);
+        assertTrue("Output byte array should match constructor byte array.",
+                Arrays.equals(SIGNATURE_BYTE_ARRAY, actualByteArray));
     }
 
-    @TestTargets({
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            notes = "Test equals",
-            method = "equals",
-            args = {java.lang.Object.class}
-        ),
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            notes = "Test hashCode",
-            method = "hashCode",
-            args = {}
-        ),
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            notes = "Test describeContents",
-            method = "describeContents",
-            args = {}
-        ),
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            notes = "Test writeToParcel",
-            method = "writeToParcel",
-            args = {android.os.Parcel.class, int.class}
-        )
-    })
+    public void testSignatureStringConstructorNull() {
+        String sig = null;
+
+        try {
+            Signature signature = new Signature(sig);
+            fail("Should throw NullPointerException on null input");
+        } catch (NullPointerException e) {
+            // pass
+        }
+    }
+
+    public void testSignatureStringConstructorInvalidLength() {
+        try {
+            Signature signature = new Signature("123");
+            fail("Should throw IllegalArgumentException on odd-sized input");
+        } catch (IllegalArgumentException e) {
+            // pass
+        }
+    }
+
+    public void testSignatureByteArrayToCharsString() {
+        Signature signature = new Signature(SIGNATURE_BYTE_ARRAY);
+        String actualString = signature.toCharsString();
+        assertEquals(SIGNATURE_STRING, actualString);
+    }
+
+    public void testSignatureByteArrayConstructorNull() {
+        byte[] sig = null;
+
+        try {
+            Signature signature = new Signature(sig);
+            fail("Should throw NullPointerException on null input");
+        } catch (NullPointerException e) {
+            // pass
+        }
+    }
+
+    public void testSignatureToChars() {
+        Signature signature = new Signature(SIGNATURE_BYTE_ARRAY);
+        char[] charArray = signature.toChars();
+        String actualString = new String(charArray);
+        assertEquals(SIGNATURE_STRING, actualString);
+    }
+
+    public void testSignatureToCharsExistingArrayCorrectlySized() {
+        char[] existingCharArray = new char[SIGNATURE_STRING.length()];
+        int[] intArray = new int[1];
+
+        Signature signature = new Signature(SIGNATURE_BYTE_ARRAY);
+
+        char[] charArray = signature.toChars(existingCharArray, intArray);
+
+        assertTrue("Should return the same object since it's correctly sized.",
+                existingCharArray == charArray);
+
+        String actualString = new String(charArray);
+        assertEquals("The re-encoded Signature should match the constructor input",
+                SIGNATURE_STRING, actualString);
+
+        // intArray[0] represents the length of array.
+        assertEquals(intArray[0], SIGNATURE_BYTE_ARRAY.length);
+    }
+
+    public void testSignatureToCharsExistingArrayTooSmall() {
+        char[] existingCharArray = new char[0];
+        int[] intArray = new int[1];
+
+        Signature signature = new Signature(SIGNATURE_BYTE_ARRAY);
+        char[] charArray = signature.toChars(existingCharArray, intArray);
+
+        assertFalse("Should return a new array since the existing one is too small",
+                existingCharArray == charArray);
+
+        String actualString = new String(charArray);
+        assertEquals("The re-encoded Signature should match the constructor input",
+                SIGNATURE_STRING, actualString);
+
+        // intArray[0] represents the length of array.
+        assertEquals(intArray[0], SIGNATURE_BYTE_ARRAY.length);
+    }
+
+    public void testSignatureToCharsNullArrays() {
+        char[] existingCharArray = null;
+        int[] intArray = null;
+
+        Signature signature = new Signature(SIGNATURE_BYTE_ARRAY);
+        char[] charArray = signature.toChars(existingCharArray, intArray);
+
+        assertFalse("Should return a new array since the existing one is too small",
+                existingCharArray == charArray);
+
+        String actualString = new String(charArray);
+        assertEquals("The re-encoded Signature should match the constructor input",
+                SIGNATURE_STRING, actualString);
+    }
+
+    public void testSignatureStringToByteArray() {
+        Signature signature = new Signature(SIGNATURE_BYTE_ARRAY);
+        byte[] actualByteArray = signature.toByteArray();
+
+        assertFalse("Should return a different array to avoid modification",
+                SIGNATURE_BYTE_ARRAY == actualByteArray);
+
+        assertTrue("Output byte array should match constructor byte array.",
+                Arrays.equals(SIGNATURE_BYTE_ARRAY, actualByteArray));
+    }
+
     public void testTools() {
-        Signature byteSignature = new Signature(mSignatureByteArray);
-        Signature stringSignature = new Signature(mSignatureString);
+        Signature byteSignature = new Signature(SIGNATURE_BYTE_ARRAY);
+        Signature stringSignature = new Signature(SIGNATURE_STRING);
 
         // Test describeContents, equals
         assertEquals(0, byteSignature.describeContents());
         assertTrue(byteSignature.equals(stringSignature));
 
         // Test hashCode
-        byteSignature = new Signature(mDiffByteArray);
+        byteSignature = new Signature(DIFF_BYTE_ARRAY);
         assertNotSame(byteSignature.hashCode(), stringSignature.hashCode());
 
         // Test writeToParcel
diff --git a/tests/tests/content/src/android/content/res/cts/ConfigurationTest.java b/tests/tests/content/src/android/content/res/cts/ConfigurationTest.java
index 01620b5..014b08c 100644
--- a/tests/tests/content/src/android/content/res/cts/ConfigurationTest.java
+++ b/tests/tests/content/src/android/content/res/cts/ConfigurationTest.java
@@ -376,29 +376,8 @@
     private void assertWriteToParcel(Configuration config, Parcel parcel) {
         config.writeToParcel(parcel, 0);
         parcel.setDataPosition(0);
-        assertEquals(config.fontScale, parcel.readFloat());
-        assertEquals(config.mcc, parcel.readInt());
-        assertEquals(config.mnc, parcel.readInt());
-        if (config.locale == null) {
-            assertEquals(0, parcel.readInt());
-        } else {
-            assertEquals(1, parcel.readInt());
-            assertEquals(config.locale.getLanguage(),
-                    parcel.readString());
-            assertEquals(config.locale.getCountry(),
-                    parcel.readString());
-            assertEquals(config.locale.getVariant(),
-                    parcel.readString());
-        }
-        parcel.readInt();
-        assertEquals(config.touchscreen, parcel.readInt());
-        assertEquals(config.keyboard, parcel.readInt());
-        assertEquals(config.keyboardHidden, parcel.readInt());
-        assertEquals(config.hardKeyboardHidden, parcel.readInt());
-        assertEquals(config.navigation, parcel.readInt());
-        assertEquals(config.navigationHidden, parcel.readInt());
-        assertEquals(config.orientation, parcel.readInt());
-        assertEquals(config.screenLayout, parcel.readInt());
+        Configuration readConf = new Configuration();
+        readConf.readFromParcel(parcel);
+        assertEquals(config, readConf);
     }
-
 }
diff --git a/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java b/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
index 2af36ff..624f35a 100644
--- a/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
+++ b/tests/tests/dpi/src/android/dpi/cts/ConfigurationTest.java
@@ -22,9 +22,6 @@
 import android.view.Display;
 import android.view.WindowManager;
 
-import java.util.HashSet;
-import java.util.Set;
-
 /**
  * Test for verifying a device's screen configuration.
  */
@@ -52,15 +49,5 @@
         boolean format4x3 = Math.ceil(max * 3.0d / 4.0d) >= min;
         assertTrue("Aspect ratio must be between 4:3 and 16:9. It was " + max + ":" + min,
                 format4x3 && format16x9);
-
-        Set<Integer> allowedDensities = new HashSet<Integer>();
-        allowedDensities.add(DisplayMetrics.DENSITY_LOW);
-        allowedDensities.add(DisplayMetrics.DENSITY_MEDIUM);
-        allowedDensities.add(DisplayMetrics.DENSITY_HIGH);
-        allowedDensities.add(DisplayMetrics.DENSITY_XHIGH);
-        assertTrue("DisplayMetrics#densityDpi must be one of the DisplayMetrics.DENSITY_* values: "
-                + allowedDensities, allowedDensities.contains(metrics.densityDpi));
-
-        assertEquals(metrics.density, (float) metrics.densityDpi / DisplayMetrics.DENSITY_DEFAULT);
     }
 }
diff --git a/tests/tests/drm/src/android/drm/cts/DRMTest.java b/tests/tests/drm/src/android/drm/cts/DRMTest.java
index dc87530..631446c 100644
--- a/tests/tests/drm/src/android/drm/cts/DRMTest.java
+++ b/tests/tests/drm/src/android/drm/cts/DRMTest.java
@@ -183,7 +183,9 @@
     }
 
     private void executeProcessDrmInfo(DrmInfo drmInfo, Config config) throws Exception {
-        assertNotNull("Failed on plugin: " + config.getPluginName(), drmInfo);
+        if (drmInfo == null) {
+            return;
+        }
 
         mDrmManagerClient.setOnEventListener(new OnEventListenerImpl(config));
         drmInfo.put(DrmInfoRequest.ACCOUNT_ID, config.getAccountId());
diff --git a/tests/tests/graphics/src/android/graphics/cts/BitmapFactoryTest.java b/tests/tests/graphics/src/android/graphics/cts/BitmapFactoryTest.java
index d7d5ff6..73a712b 100755
--- a/tests/tests/graphics/src/android/graphics/cts/BitmapFactoryTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/BitmapFactoryTest.java
@@ -71,6 +71,11 @@
     private static int WIDTHS[] = new int[] { 1280, 640, 320, 320, 640 };
     private static int HEIGHTS[] = new int[] { 960, 480, 240, 240, 480 };
 
+    // Configurations for BitmapFactory.Options
+    private static Config[] COLOR_CONFIGS = new Config[] {Config.ARGB_8888, Config.RGB_565,
+        Config.ARGB_4444};
+    private static int[] COLOR_TOLS = new int[] {16, 49, 576};
+
     @Override
     protected void setUp() throws Exception {
         super.setUp();
@@ -228,29 +233,30 @@
     )
     public void testDecodeStream4() throws IOException {
         BitmapFactory.Options options = new BitmapFactory.Options();
-        options.inPreferredConfig = Config.ARGB_8888;
-        final int kErrorTol = 16;
+        for (int k = 0; k < COLOR_CONFIGS.length; ++k) {
+            options.inPreferredConfig = COLOR_CONFIGS[k];
 
-        // Decode the PNG & WebP test images. The WebP test image has been encoded from PNG test
-        // image and should have same similar (within some error-tolerance) Bitmap data.
-        InputStream iStreamPng = obtainInputStream(R.drawable.png_test);
-        Bitmap bPng = BitmapFactory.decodeStream(iStreamPng, null, options);
-        assertNotNull(bPng);
-        assertEquals(bPng.getConfig(), Config.ARGB_8888);
+            // Decode the PNG & WebP test images. The WebP test image has been encoded from PNG test
+            // image and should have same similar (within some error-tolerance) Bitmap data.
+            InputStream iStreamPng = obtainInputStream(R.drawable.png_test);
+            Bitmap bPng = BitmapFactory.decodeStream(iStreamPng, null, options);
+            assertNotNull(bPng);
+            assertEquals(bPng.getConfig(), COLOR_CONFIGS[k]);
 
-        InputStream iStreamWebp1 = obtainInputStream(R.drawable.webp_test);
-        Bitmap bWebp1 = BitmapFactory.decodeStream(iStreamWebp1, null, options);
-        assertNotNull(bWebp1);
-        compareBitmaps(bPng, bWebp1, kErrorTol, true);
+            InputStream iStreamWebp1 = obtainInputStream(R.drawable.webp_test);
+            Bitmap bWebp1 = BitmapFactory.decodeStream(iStreamWebp1, null, options);
+            assertNotNull(bWebp1);
+            compareBitmaps(bPng, bWebp1, COLOR_TOLS[k], true);
 
-        // Compress the PNG image to WebP format (Quality=90) and decode it back.
-        // This will test end-to-end WebP encoding and decoding.
-        ByteArrayOutputStream oStreamWebp = new ByteArrayOutputStream();
-        assertTrue(bPng.compress(CompressFormat.WEBP, 90, oStreamWebp));
-        InputStream iStreamWebp2 = new ByteArrayInputStream(oStreamWebp.toByteArray());
-        Bitmap bWebp2 = BitmapFactory.decodeStream(iStreamWebp2, null, options);
-        assertNotNull(bWebp2);
-        compareBitmaps(bPng, bWebp2, kErrorTol, true);
+            // Compress the PNG image to WebP format (Quality=90) and decode it back.
+            // This will test end-to-end WebP encoding and decoding.
+            ByteArrayOutputStream oStreamWebp = new ByteArrayOutputStream();
+            assertTrue(bPng.compress(CompressFormat.WEBP, 90, oStreamWebp));
+            InputStream iStreamWebp2 = new ByteArrayInputStream(oStreamWebp.toByteArray());
+            Bitmap bWebp2 = BitmapFactory.decodeStream(iStreamWebp2, null, options);
+            assertNotNull(bWebp2);
+            compareBitmaps(bPng, bWebp2, COLOR_TOLS[k], true);
+        }
     }
 
     @TestTargetNew(
diff --git a/tests/tests/graphics/src/android/graphics/cts/BitmapRegionDecoderTest.java b/tests/tests/graphics/src/android/graphics/cts/BitmapRegionDecoderTest.java
index abbba4b..93d8bd6 100755
--- a/tests/tests/graphics/src/android/graphics/cts/BitmapRegionDecoderTest.java
+++ b/tests/tests/graphics/src/android/graphics/cts/BitmapRegionDecoderTest.java
@@ -53,27 +53,28 @@
     private Resources mRes;
 
     // The test images, including baseline JPEGs and progressive JPEGs, a PNG,
-    // a GIF and a BMP.
+    // a WEBP, a GIF and a BMP.
     private static int[] RES_IDS = new int[] {
             R.drawable.baseline_jpeg, R.drawable.progressive_jpeg,
             R.drawable.baseline_restart_jpeg,
             R.drawable.progressive_restart_jpeg,
-            R.drawable.png_test, R.drawable.gif_test, R.drawable.bmp_test
+            R.drawable.png_test, R.drawable.webp_test,
+            R.drawable.gif_test, R.drawable.bmp_test
     };
     private static String[] NAMES_TEMP_FILES = new String[] {
-        "baseline_temp.jpg", "progressive_temp.jpg", "baseline_restart_temp.jpg"
-        , "progressive_restart_temp.jpg", "png_temp.png", "gif_temp.gif",
-        "bmp_temp.bmp"
+        "baseline_temp.jpg", "progressive_temp.jpg", "baseline_restart_temp.jpg",
+        "progressive_restart_temp.jpg", "png_temp.png", "webp_temp.webp",
+        "gif_temp.gif", "bmp_temp.bmp"
     };
 
     // The width and height of the above image.
     // -1 denotes that the image format is not supported by BitmapRegionDecoder
     private static int WIDTHS[] = new int[] {
-            1280, 1280, 1280, 1280, 640, -1, -1};
-    private static int HEIGHTS[] = new int[] {960, 960, 960, 960, 480, -1, -1};
+            1280, 1280, 1280, 1280, 640, 640, -1, -1};
+    private static int HEIGHTS[] = new int[] {960, 960, 960, 960, 480, 480, -1, -1};
 
     // The number of test images, format of which is supported by BitmapRegionDecoder
-    private static int NUM_TEST_IMAGES = 5;
+    private static int NUM_TEST_IMAGES = 6;
 
     private static int TILE_SIZE = 256;
 
@@ -91,6 +92,9 @@
     // square error of 3 * (1 * 1) among the RGB values.
     private int mMseMargin = 3 * (1 * 1);
 
+    // MSE margin for WebP Region-Decoding for 'Config.RGB_565' is little bigger.
+    private int mMseMarginWebPConfigRgb565 = 5;
+
 
     @Override
     protected void setUp() throws Exception {
@@ -195,7 +199,12 @@
                     InputStream is2 = obtainInputStream(RES_IDS[i]);
                     Bitmap wholeImage = BitmapFactory.decodeStream(is2, null, opts);
 
-                    compareRegionByRegion(decoder, opts, wholeImage);
+                    if (RES_IDS[i] == R.drawable.webp_test && COLOR_CONFIGS[k] == Config.RGB_565) {
+                        compareRegionByRegion(decoder, opts, mMseMarginWebPConfigRgb565,
+                                              wholeImage);
+                    } else {
+                        compareRegionByRegion(decoder, opts, mMseMargin, wholeImage);
+                    }
                     wholeImage.recycle();
                 }
             }
@@ -221,7 +230,12 @@
                     Bitmap wholeImage = BitmapFactory.decodeByteArray(imageData,
                             0, imageData.length, opts);
 
-                    compareRegionByRegion(decoder, opts, wholeImage);
+                    if (RES_IDS[i] == R.drawable.webp_test && COLOR_CONFIGS[k] == Config.RGB_565) {
+                        compareRegionByRegion(decoder, opts, mMseMarginWebPConfigRgb565,
+                                              wholeImage);
+                    } else {
+                        compareRegionByRegion(decoder, opts, mMseMargin, wholeImage);
+                    }
                     wholeImage.recycle();
                 }
             }
@@ -245,14 +259,24 @@
                     BitmapRegionDecoder decoder =
                         BitmapRegionDecoder.newInstance(filepath, false);
                     Bitmap wholeImage = BitmapFactory.decodeFile(filepath, opts);
-                    compareRegionByRegion(decoder, opts, wholeImage);
+                    if (RES_IDS[i] == R.drawable.webp_test && COLOR_CONFIGS[k] == Config.RGB_565) {
+                        compareRegionByRegion(decoder, opts, mMseMarginWebPConfigRgb565,
+                                              wholeImage);
+                    } else {
+                        compareRegionByRegion(decoder, opts, mMseMargin, wholeImage);
+                    }
 
                     ParcelFileDescriptor pfd1 = obtainParcelDescriptor(filepath);
                     FileDescriptor fd1 = pfd1.getFileDescriptor();
                     decoder = BitmapRegionDecoder.newInstance(fd1, false);
                     ParcelFileDescriptor pfd2 = obtainParcelDescriptor(filepath);
                     FileDescriptor fd2 = pfd2.getFileDescriptor();
-                    compareRegionByRegion(decoder, opts, wholeImage);
+                    if (RES_IDS[i] == R.drawable.webp_test && COLOR_CONFIGS[k] == Config.RGB_565) {
+                        compareRegionByRegion(decoder, opts, mMseMarginWebPConfigRgb565,
+                                              wholeImage);
+                    } else {
+                        compareRegionByRegion(decoder, opts, mMseMargin, wholeImage);
+                    }
                     wholeImage.recycle();
                 }
             }
@@ -298,7 +322,7 @@
     }
 
     private void compareRegionByRegion(BitmapRegionDecoder decoder,
-            Options opts, Bitmap wholeImage) {
+            Options opts, int mseMargin, Bitmap wholeImage) {
         int width = decoder.getWidth();
         int height = decoder.getHeight();
         Rect rect = new Rect(0, 0, width, height);
@@ -318,7 +342,7 @@
                 Rect rect2 = new Rect(left, top, left + actual.getWidth(),
                         top + actual.getHeight());
                 expected = cropBitmap(wholeImage, rect2);
-                compareBitmaps(expected, actual, mMseMargin, true);
+                compareBitmaps(expected, actual, mseMargin, true);
                 actual.recycle();
                 expected.recycle();
             }
diff --git a/tests/tests/graphics/src/android/graphics/drawable/cts/ClipDrawableTest.java b/tests/tests/graphics/src/android/graphics/drawable/cts/ClipDrawableTest.java
index d503938..8a5d7aa 100644
--- a/tests/tests/graphics/src/android/graphics/drawable/cts/ClipDrawableTest.java
+++ b/tests/tests/graphics/src/android/graphics/drawable/cts/ClipDrawableTest.java
@@ -18,32 +18,30 @@
 
 import com.android.cts.stub.R;
 
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass;
-import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.ToBeFixed;
-
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
+import java.io.IOException;
+
 import android.graphics.Bitmap;
+import android.graphics.Bitmap.Config;
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
 import android.graphics.PixelFormat;
 import android.graphics.Rect;
-import android.graphics.Bitmap.Config;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.ClipDrawable;
 import android.graphics.drawable.Drawable;
-import android.graphics.drawable.Drawable.Callback;
 import android.graphics.drawable.Drawable.ConstantState;
 import android.test.AndroidTestCase;
 import android.util.AttributeSet;
 import android.util.StateSet;
 import android.util.Xml;
 import android.view.Gravity;
-
-import java.io.IOException;
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.ToBeFixed;
 
 @TestTargetClass(android.graphics.drawable.ClipDrawable.class)
 public class ClipDrawableTest extends AndroidTestCase {
@@ -523,7 +521,7 @@
         }
     }
 
-    private class MockCallback implements Callback {
+    private class MockCallback implements Drawable.Callback2 {
         private Drawable mInvalidateDrawable;
         private Drawable mScheduleDrawable;
         private Runnable mRunnable;
@@ -559,5 +557,9 @@
             mScheduleDrawable = who;
             mRunnable = what;
         }
+
+        public int getResolvedLayoutDirection(Drawable who) {
+            return 0;
+        }
     }
 }
diff --git a/tests/tests/graphics/src/android/graphics/drawable/cts/DrawableContainerTest.java b/tests/tests/graphics/src/android/graphics/drawable/cts/DrawableContainerTest.java
index c9107ab..9191cac 100644
--- a/tests/tests/graphics/src/android/graphics/drawable/cts/DrawableContainerTest.java
+++ b/tests/tests/graphics/src/android/graphics/drawable/cts/DrawableContainerTest.java
@@ -16,11 +16,9 @@
 
 package android.graphics.drawable.cts;
 
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass;
-import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.TestTargets;
-import dalvik.annotation.ToBeFixed;
+import junit.framework.TestCase;
+
+import java.util.Arrays;
 
 import android.graphics.Canvas;
 import android.graphics.ColorFilter;
@@ -28,13 +26,13 @@
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.graphics.drawable.DrawableContainer;
-import android.graphics.drawable.LevelListDrawable;
-import android.graphics.drawable.Drawable.Callback;
 import android.graphics.drawable.DrawableContainer.DrawableContainerState;
-
-import java.util.Arrays;
-
-import junit.framework.TestCase;
+import android.graphics.drawable.LevelListDrawable;
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
+import dalvik.annotation.ToBeFixed;
 
 @TestTargetClass(DrawableContainer.class)
 public class DrawableContainerTest extends TestCase {
@@ -1098,7 +1096,7 @@
         }
     }
 
-    private class MockCallBack implements Callback {
+    private class MockCallBack implements Drawable.Callback2 {
         private boolean mCalledInvalidateDrawable;
 
         private boolean mCalledScheduleDrawable;
@@ -1134,5 +1132,9 @@
         public void unscheduleDrawable(Drawable who, Runnable what) {
             mCalledUnscheduleDrawable = true;
         }
+
+        public int getResolvedLayoutDirection(Drawable who) {
+            return 0;
+        }
     }
 }
diff --git a/tests/tests/graphics/src/android/graphics/drawable/cts/DrawableTest.java b/tests/tests/graphics/src/android/graphics/drawable/cts/DrawableTest.java
index 4d37508..97f160f 100644
--- a/tests/tests/graphics/src/android/graphics/drawable/cts/DrawableTest.java
+++ b/tests/tests/graphics/src/android/graphics/drawable/cts/DrawableTest.java
@@ -18,15 +18,17 @@
 
 import com.android.cts.stub.R;
 
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass;
-import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.TestTargets;
-import dalvik.annotation.ToBeFixed;
-
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
 import android.content.ContentResolver;
 import android.content.res.Resources;
 import android.graphics.BitmapFactory;
@@ -36,21 +38,17 @@
 import android.graphics.PorterDuff;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
-import android.graphics.drawable.Drawable.Callback;
 import android.net.Uri;
 import android.test.AndroidTestCase;
 import android.util.AttributeSet;
 import android.util.StateSet;
 import android.util.TypedValue;
 import android.util.Xml;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
+import dalvik.annotation.ToBeFixed;
 
 @TestTargetClass(Drawable.class)
 public class DrawableTest extends AndroidTestCase {
@@ -808,6 +806,22 @@
         assertSame(mockDrawable, mockDrawable.mutate());
     }
 
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        method = "isLayoutRtlSelf",
+        args = {java.lang.Runnable.class}
+    )
+    public void getResolvedLayoutDirectionSelf() {
+        MockDrawable mockDrawable = new MockDrawable();
+        MockCallback mockCallback = new MockCallback(1);
+        mockDrawable.setCallback(mockCallback);
+        assertEquals(1, mockDrawable.getResolvedLayoutDirectionSelf());
+
+        mockCallback = new MockCallback(0);
+        mockDrawable.setCallback(mockCallback);
+        assertEquals(0, mockDrawable.getResolvedLayoutDirectionSelf());
+    }
+
     private static class MockDrawable extends Drawable {
         private ColorFilter mColorFilter;
 
@@ -842,11 +856,21 @@
         }
     }
 
-    private static class MockCallback implements Callback {
+    private static class MockCallback implements Drawable.Callback2 {
         private Drawable mInvalidateDrawable;
         private Drawable mScheduleDrawable;
         private Runnable mRunnable;
         private long mWhen;
+        private int mLayoutDirection;
+
+        public MockCallback() {
+            // 0 for LTR layout direction
+            this(0);
+        }
+
+        public MockCallback(int direction) {
+            mLayoutDirection = direction;
+        }
 
         public Drawable getInvalidateDrawable() {
             return mInvalidateDrawable;
@@ -878,5 +902,9 @@
             mScheduleDrawable = who;
             mRunnable = what;
         }
+
+        public int getResolvedLayoutDirection(Drawable who) {
+            return mLayoutDirection;
+        }
     }
 }
diff --git a/tests/tests/graphics/src/android/graphics/drawable/cts/LayerDrawableTest.java b/tests/tests/graphics/src/android/graphics/drawable/cts/LayerDrawableTest.java
index 604f1e24..cb9b7b6 100644
--- a/tests/tests/graphics/src/android/graphics/drawable/cts/LayerDrawableTest.java
+++ b/tests/tests/graphics/src/android/graphics/drawable/cts/LayerDrawableTest.java
@@ -18,14 +18,10 @@
 
 import com.android.cts.stub.R;
 
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass;
-import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.TestTargets;
-import dalvik.annotation.ToBeFixed;
-
 import org.xmlpull.v1.XmlPullParserException;
 
+import java.io.IOException;
+
 import android.R.attr;
 import android.content.res.Resources;
 import android.content.res.XmlResourceParser;
@@ -37,19 +33,21 @@
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
+import android.graphics.drawable.Drawable.ConstantState;
 import android.graphics.drawable.GradientDrawable;
 import android.graphics.drawable.LayerDrawable;
 import android.graphics.drawable.RotateDrawable;
 import android.graphics.drawable.ShapeDrawable;
 import android.graphics.drawable.StateListDrawable;
-import android.graphics.drawable.Drawable.Callback;
-import android.graphics.drawable.Drawable.ConstantState;
 import android.test.AndroidTestCase;
 import android.util.AttributeSet;
 import android.util.StateSet;
 import android.view.View;
-
-import java.io.IOException;
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
+import dalvik.annotation.ToBeFixed;
 
 @TestTargetClass(android.graphics.drawable.LayerDrawable.class)
 public class LayerDrawableTest extends AndroidTestCase {
@@ -418,7 +416,7 @@
         assertFalse(cb.hasCalledUnschedule());
     }
 
-    private static class MockCallback implements Callback {
+    private static class MockCallback implements Drawable.Callback2 {
         private boolean mCalledInvalidate;
         private boolean mCalledSchedule;
         private boolean mCalledUnschedule;
@@ -447,6 +445,10 @@
             return mCalledUnschedule;
         }
 
+        public int getResolvedLayoutDirection(Drawable who) {
+            return 0;
+        }
+
         public void reset() {
             mCalledInvalidate = false;
             mCalledSchedule = false;
diff --git a/tests/tests/graphics/src/android/graphics/drawable/cts/RotateDrawableTest.java b/tests/tests/graphics/src/android/graphics/drawable/cts/RotateDrawableTest.java
index 97bc210..8dde6a3 100644
--- a/tests/tests/graphics/src/android/graphics/drawable/cts/RotateDrawableTest.java
+++ b/tests/tests/graphics/src/android/graphics/drawable/cts/RotateDrawableTest.java
@@ -18,15 +18,11 @@
 
 import com.android.cts.stub.R;
 
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass;
-import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.TestTargets;
-import dalvik.annotation.ToBeFixed;
-
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
 
+import java.io.IOException;
+
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.graphics.Canvas;
@@ -35,14 +31,16 @@
 import android.graphics.Rect;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
-import android.graphics.drawable.RotateDrawable;
-import android.graphics.drawable.Drawable.Callback;
 import android.graphics.drawable.Drawable.ConstantState;
+import android.graphics.drawable.RotateDrawable;
 import android.test.AndroidTestCase;
 import android.util.AttributeSet;
 import android.util.Xml;
-
-import java.io.IOException;
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
+import dalvik.annotation.ToBeFixed;
 
 @TestTargetClass(android.graphics.drawable.RotateDrawable.class)
 public class RotateDrawableTest extends AndroidTestCase {
@@ -352,7 +350,7 @@
         assertEquals(50, ((BitmapDrawable) d3.getDrawable()).getPaint().getAlpha());
     }
 
-    private static class MockCallback implements Callback {
+    private static class MockCallback implements Drawable.Callback2 {
         private boolean mCalledInvalidate;
         private boolean mCalledSchedule;
         private boolean mCalledUnschedule;
@@ -381,6 +379,10 @@
             return mCalledUnschedule;
         }
 
+        public int getResolvedLayoutDirection(Drawable who) {
+            return 0;
+        }
+
         public void reset() {
             mCalledInvalidate = false;
             mCalledSchedule = false;
diff --git a/tests/tests/graphics/src/android/graphics/drawable/cts/ScaleDrawableTest.java b/tests/tests/graphics/src/android/graphics/drawable/cts/ScaleDrawableTest.java
index 23e8745..12e8279 100644
--- a/tests/tests/graphics/src/android/graphics/drawable/cts/ScaleDrawableTest.java
+++ b/tests/tests/graphics/src/android/graphics/drawable/cts/ScaleDrawableTest.java
@@ -18,14 +18,10 @@
 
 import com.android.cts.stub.R;
 
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass;
-import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.TestTargets;
-import dalvik.annotation.ToBeFixed;
-
 import org.xmlpull.v1.XmlPullParserException;
 
+import java.io.IOException;
+
 import android.content.res.Resources;
 import android.content.res.XmlResourceParser;
 import android.graphics.Canvas;
@@ -33,16 +29,18 @@
 import android.graphics.Rect;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
-import android.graphics.drawable.ScaleDrawable;
-import android.graphics.drawable.Drawable.Callback;
 import android.graphics.drawable.Drawable.ConstantState;
+import android.graphics.drawable.ScaleDrawable;
 import android.test.AndroidTestCase;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
 import android.util.StateSet;
 import android.view.Gravity;
-
-import java.io.IOException;
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
+import dalvik.annotation.ToBeFixed;
 
 @TestTargetClass(android.graphics.drawable.ScaleDrawable.class)
 public class ScaleDrawableTest extends AndroidTestCase {
@@ -149,7 +147,7 @@
         assertFalse(cb.hasCalledUnschedule());
     }
 
-    private static class MockCallback implements Callback {
+    private static class MockCallback implements Drawable.Callback2 {
         private boolean mCalledInvalidate;
         private boolean mCalledSchedule;
         private boolean mCalledUnschedule;
@@ -178,6 +176,10 @@
             return mCalledUnschedule;
         }
 
+        public int getResolvedLayoutDirection(Drawable who) {
+            return 0;
+        }
+
         public void reset() {
             mCalledInvalidate = false;
             mCalledSchedule = false;
diff --git a/tests/tests/graphics/src/android/graphics/drawable/cts/TransitionDrawableTest.java b/tests/tests/graphics/src/android/graphics/drawable/cts/TransitionDrawableTest.java
index c02593f..a60bfe9 100644
--- a/tests/tests/graphics/src/android/graphics/drawable/cts/TransitionDrawableTest.java
+++ b/tests/tests/graphics/src/android/graphics/drawable/cts/TransitionDrawableTest.java
@@ -18,21 +18,19 @@
 
 import com.android.cts.stub.R;
 
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.Bitmap.Config;
+import android.graphics.Canvas;
+import android.graphics.drawable.Drawable;
+import android.graphics.drawable.TransitionDrawable;
+import android.test.InstrumentationTestCase;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetClass;
 import dalvik.annotation.TestTargetNew;
 import dalvik.annotation.TestTargets;
 import dalvik.annotation.ToBeFixed;
 
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Bitmap.Config;
-import android.graphics.drawable.Drawable;
-import android.graphics.drawable.TransitionDrawable;
-import android.graphics.drawable.Drawable.Callback;
-import android.test.InstrumentationTestCase;
-
 @TestTargetClass(TransitionDrawable.class)
 public class TransitionDrawableTest extends InstrumentationTestCase {
     private static final int COLOR1 = 0xff0000ff;
@@ -314,7 +312,7 @@
         }
     }
 
-    private class MockCallBack implements Callback {
+    private class MockCallBack implements Drawable.Callback2 {
         private boolean mHasCalledInvalidateDrawable;
 
         public boolean hasCalledInvalidateDrawable() {
@@ -333,5 +331,9 @@
 
         public void unscheduleDrawable(Drawable who, Runnable what) {
         }
+
+        public int getResolvedLayoutDirection(Drawable who) {
+            return 0;
+        }
     }
 }
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
new file mode 100644
index 0000000..816ffaa
--- /dev/null
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraGLTest.java
@@ -0,0 +1,882 @@
+/*
+ * Copyright (C) 2011 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 android.hardware.cts;
+
+import android.content.Context;
+import android.graphics.SurfaceTexture;
+import android.hardware.Camera;
+import android.hardware.Camera.Parameters;
+import android.hardware.Camera.Size;
+
+import android.opengl.GLES20;
+import android.opengl.GLSurfaceView;
+import android.opengl.Matrix;
+import android.opengl.cts.GLSurfaceViewStubActivity;
+
+import android.os.ConditionVariable;
+import android.os.Environment;
+import android.os.Looper;
+import android.os.PowerManager;
+import android.os.PowerManager.WakeLock;
+
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.MoreAsserts;
+import android.test.UiThreadTest;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.util.Log;
+
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+
+import java.io.IOException;
+import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
+import java.nio.FloatBuffer;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Iterator;
+import java.util.List;
+
+import javax.microedition.khronos.egl.EGL10;
+import javax.microedition.khronos.egl.EGLConfig;
+import javax.microedition.khronos.egl.EGLContext;
+import javax.microedition.khronos.egl.EGLDisplay;
+import javax.microedition.khronos.opengles.GL10;
+
+/**
+ * This test case must run with hardware. It can't be tested in emulator
+ */
+@LargeTest
+@TestTargetClass(Camera.class)
+public class CameraGLTest extends ActivityInstrumentationTestCase2<GLSurfaceViewStubActivity> {
+    private static final String TAG = "CameraGLTest";
+    private static final String PACKAGE = "com.android.cts.stub";
+    private static final boolean LOGV = false;
+    private static final boolean LOGVV = false;
+    private static final int EGL_OPENGL_ES2_BIT = 0x0004;
+
+    private boolean mSurfaceTextureCallbackResult = false;
+
+    private static final int WAIT_FOR_COMMAND_TO_COMPLETE = 1500;  // Milliseconds.
+    private static final int WAIT_FOR_FOCUS_TO_COMPLETE = 3000;
+    private static final int WAIT_FOR_SNAPSHOT_TO_COMPLETE = 5000;
+
+    private SurfaceTextureCallback mSurfaceTextureCallback = new SurfaceTextureCallback();
+    private SurfaceTextureBurstCallback mSurfaceTextureBurstCallback = new SurfaceTextureBurstCallback();
+    private PreviewCallback mPreviewCallback = new PreviewCallback();
+
+    private Looper mLooper = null;
+    private final ConditionVariable mSurfaceTextureDone = new ConditionVariable();
+    private final ConditionVariable mPreviewDone = new ConditionVariable();
+
+    Camera mCamera;
+    SurfaceTexture mSurfaceTexture;
+    Renderer mRenderer;
+    GLSurfaceView mGLView;
+
+    public CameraGLTest() {
+        super(PACKAGE, GLSurfaceViewStubActivity.class);
+        if (LOGV) Log.v(TAG, "CameraGLTest Constructor");
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        // Set up renderer instance
+        mRenderer = this.new Renderer();
+        GLSurfaceViewStubActivity.setRenderer(mRenderer);
+        GLSurfaceViewStubActivity.setRenderMode(GLSurfaceView.RENDERMODE_WHEN_DIRTY);
+        GLSurfaceViewStubActivity.setGlVersion(2);
+        // Start CameraStubActivity.
+        GLSurfaceViewStubActivity stubActivity = getActivity();
+        // Store a link to the view so we can redraw it when needed
+        mGLView = stubActivity.getView();
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        if (mCamera != null) {
+            terminateMessageLooper();
+        }
+        // Clean up static values in stub so it can be reused
+        GLSurfaceViewStubActivity.resetRenderMode();
+        GLSurfaceViewStubActivity.resetRenderer();
+        GLSurfaceViewStubActivity.resetGlVersion();
+
+        super.tearDown();
+    }
+
+    /**
+     * Initializes the message looper so that the Camera object can
+     * receive the callback messages.
+     */
+    private void initializeMessageLooper(final int cameraId) {
+        final ConditionVariable startDone = new ConditionVariable();
+        new Thread() {
+            @Override
+            public void run() {
+                Log.v(TAG, "Start camera/surfacetexture thread");
+                // Set up a looper to be used by camera.
+                Looper.prepare();
+                // Save the looper so that we can terminate this thread
+                // after we are done with it.
+                mLooper = Looper.myLooper();
+                // These must be instantiated outside the UI thread, since the
+                // UI thread will be doing a lot of waiting, stopping callbacks.
+                mCamera = Camera.open(cameraId);
+                mSurfaceTexture = new SurfaceTexture(mRenderer.getTextureID());
+                Log.v(TAG, "Camera " + cameraId + " is opened.");
+                startDone.open();
+                Looper.loop(); // Blocks forever until Looper.quit() is called.
+                Log.v(TAG, "Stop camera/surfacetexture thread");
+            }
+        }.start();
+
+        Log.v(TAG, "start waiting for looper");
+        if (!startDone.block(WAIT_FOR_COMMAND_TO_COMPLETE)) {
+            fail("initializeMessageLooper: start timeout");
+        }
+    }
+
+    /**
+     * Terminates the message looper thread.
+     */
+    private void terminateMessageLooper() throws Exception {
+        if (LOGV) Log.v(TAG, "Shutting down camera");
+        mCamera.release();
+        mLooper.quit();
+        // Looper.quit() is asynchronous. The looper may still has some
+        // preview callbacks in the queue after quit is called. The preview
+        // callback still uses the camera object (setHasPreviewCallback).
+        // After camera is released, RuntimeException will be thrown from
+        // the method. So we need to join the looper thread here.
+        mLooper.getThread().join();
+        mCamera = null;
+        mSurfaceTexture = null;
+        if (LOGV) Log.v(TAG, "Shutdown of camera complete.");
+    }
+
+    /** The camera preview callback. Stops capture after the first callback */
+    private final class PreviewCallback
+            implements android.hardware.Camera.PreviewCallback {
+        public void onPreviewFrame(byte [] data, Camera camera) {
+            if (LOGV) Log.v(TAG, "PreviewCallback");
+            assertNotNull(data);
+            Size size = camera.getParameters().getPreviewSize();
+            assertEquals(size.width * size.height * 3 / 2, data.length);
+            mCamera.stopPreview();
+            mPreviewDone.open();
+        }
+    }
+
+    /** A simple SurfaceTexture listener callback, meant to be used together with the camera preview
+     * callback */
+    private final class SurfaceTextureCallback
+            implements android.graphics.SurfaceTexture.OnFrameAvailableListener {
+        public void onFrameAvailable(SurfaceTexture surfaceTexture) {
+            if (LOGV) Log.v(TAG, "SurfaceTextureCallback");
+            mSurfaceTextureDone.open();
+            // Assumes preview is stopped elsewhere
+        }
+    }
+
+    /** A burst SurfaceTexture listener callback, used for multiple-frame capture */
+    private final class SurfaceTextureBurstCallback
+            implements android.graphics.SurfaceTexture.OnFrameAvailableListener {
+
+        public void setBurstCount(int burstCount) {
+            mBurstCount = burstCount;
+        }
+
+        public int getBurstCount() {
+            return mBurstCount;
+        }
+
+        public void onFrameAvailable(SurfaceTexture surfaceTexture) {
+            if (LOGVV) Log.v(TAG, "SurfaceTextureBurstCallback, frame #" + mBurstCount);
+            mBurstCount--;
+            if (!mSurfaceTextureCallbackResult) {
+                if (mBurstCount <= 0) {
+                    if (LOGV) Log.v(TAG, "SurfaceTextureBurstCallback stopping preview.");
+                    mCamera.stopPreview();
+                    if (LOGVV) Log.v(TAG, "SurfaceTextureBurstCallback preview stopped.");
+                    mSurfaceTextureCallbackResult = true;
+                }
+                mSurfaceTextureDone.open();
+            }
+        }
+
+        private int mBurstCount = 0;
+    }
+
+    /** Waits until surface texture callbacks have fired */
+    private boolean waitForSurfaceTextureDone() {
+        if (LOGVV) Log.v(TAG, "Wait for surface texture callback");
+        if (!mSurfaceTextureDone.block(WAIT_FOR_COMMAND_TO_COMPLETE)) {
+            // timeout could be expected or unexpected. The caller will decide.
+            Log.v(TAG, "waitForSurfaceTextureDone: timeout");
+            return false;
+        }
+        mSurfaceTextureDone.close();
+        return true;
+    }
+
+    /** Waits until the camera preview callback has fired */
+    private boolean waitForPreviewDone() {
+        if (LOGVV) Log.v(TAG, "Wait for preview callback");
+        if (!mPreviewDone.block(WAIT_FOR_COMMAND_TO_COMPLETE)) {
+            // timeout could be expected or unexpected. The caller will decide.
+            Log.v(TAG, "waitForPreviewDone: timeout");
+            return false;
+        }
+        mPreviewDone.close();
+        return true;
+    }
+
+    /** @return OpenGL ES major version 1 or 2 or some negative number for error */
+    private static int getDetectedVersion() {
+        /*
+         * Get all the device configurations and check if any of the attributes specify the
+         * the EGL_OPENGL_ES2_BIT to determine whether the device supports 2.0.
+         */
+        EGL10 egl = (EGL10) EGLContext.getEGL();
+        EGLDisplay display = egl.eglGetDisplay(EGL10.EGL_DEFAULT_DISPLAY);
+        int[] numConfigs = new int[1];
+
+        if (egl.eglInitialize(display, null)) {
+            try {
+                if (egl.eglGetConfigs(display, null, 0, numConfigs)) {
+                    EGLConfig[] configs = new EGLConfig[numConfigs[0]];
+                    if (egl.eglGetConfigs(display, configs, numConfigs[0], numConfigs)) {
+                        int[] value = new int[1];
+                        for (int i = 0; i < numConfigs[0]; i++) {
+                            if (egl.eglGetConfigAttrib(display, configs[i],
+                                    EGL10.EGL_RENDERABLE_TYPE, value)) {
+                                if ((value[0] & EGL_OPENGL_ES2_BIT) == EGL_OPENGL_ES2_BIT) {
+                                    return 2;
+                                }
+                            } else {
+                                Log.w(TAG, "Getting config attribute with "
+                                        + "EGL10#eglGetConfigAttrib failed "
+                                        + "(" + i + "/" + numConfigs[0] + "): "
+                                        + egl.eglGetError());
+                            }
+                        }
+                        return 1;
+                    } else {
+                        Log.e(TAG, "Getting configs with EGL10#eglGetConfigs failed: "
+                                + egl.eglGetError());
+                        return -1;
+                    }
+                } else {
+                    Log.e(TAG, "Getting number of configs with EGL10#eglGetConfigs failed: "
+                            + egl.eglGetError());
+                    return -2;
+                }
+              } finally {
+                  egl.eglTerminate(display);
+              }
+        } else {
+            Log.e(TAG, "Couldn't initialize EGL.");
+            return -3;
+        }
+    }
+
+    /** Generic per-camera test interface */
+    private interface RunPerCamera {
+        void run(int cameraId) throws Exception;
+    }
+
+    /** Generic camera test runner, to minimize boilerplace duplication */
+    private void runForAllCameras(RunPerCamera test) throws Exception {
+        /* Currently OpenGL ES 2.0 is supported for this test, so just skip it
+           if only 1.0 is available. */
+        int glVersion = getDetectedVersion();
+        assertTrue(glVersion > 0);
+        if (glVersion != 2) {
+            Log.w(TAG, "Skipping test because OpenGL ES 2 is not supported");
+            return;
+        }
+
+        /* Make sure the screen stays on while testing - otherwise the OpenGL context may disappear */
+        PowerManager pm = (PowerManager) getActivity().getSystemService(Context.POWER_SERVICE);
+        PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "CameraGLTest");
+        wl.acquire();
+        try {
+            /* Run the requested test per camera */
+            int nCameras = Camera.getNumberOfCameras();
+            for (int id = 0; id < nCameras; id++) {
+                Log.v(TAG, "Camera id=" + id);
+                test.run(id);
+            }
+        } finally {
+            wl.release();
+            // If an assert failed, camera might still be active. Clean up before next test.
+            if (mCamera != null) {
+                terminateMessageLooper();
+            }
+        }
+    }
+
+    /** Test Camera.setPreviewTexture in conjunction with the standard Camera preview callback */
+    @UiThreadTest
+    public void testSetPreviewTexturePreviewCallback() throws Exception {
+        runForAllCameras(testSetPreviewTexturePreviewCallbackByCamera);
+    }
+
+    private RunPerCamera testSetPreviewTexturePreviewCallbackByCamera = new RunPerCamera() {
+        public void run(int cameraId) throws Exception {
+            boolean noTimeout;
+            // Check the order: startPreview->setPreviewTexture, with a PreviewCallback as well
+            mPreviewDone.close();
+            initializeMessageLooper(cameraId);
+            mCamera.setPreviewCallback(mPreviewCallback);
+            mCamera.startPreview();
+            mCamera.setPreviewTexture(mSurfaceTexture);
+            noTimeout = waitForPreviewDone();
+            assertTrue("Timeout waiting for new preview callback!", noTimeout);
+            terminateMessageLooper();
+
+            // Check the order: setPreviewTexture->startPreview.
+            initializeMessageLooper(cameraId);
+            mCamera.setPreviewCallback(mPreviewCallback);
+            mCamera.setPreviewTexture(mSurfaceTexture);
+            mCamera.startPreview();
+            noTimeout = waitForPreviewDone();
+            assertTrue("Timeout waiting for new preview callback!", noTimeout);
+
+            // Check the order: setting preview display to null->startPreview->
+            // setPreviewTexture.
+            mCamera.setPreviewCallback(mPreviewCallback);
+            mCamera.setPreviewTexture(null);
+            mCamera.startPreview();
+            mCamera.setPreviewTexture(mSurfaceTexture);
+            noTimeout = waitForPreviewDone();
+            assertTrue("Timeout waiting for new preview callback!", noTimeout);
+            terminateMessageLooper();
+        }
+    };
+
+    /** Test Camera.setPreviewTexture in conjunction with both the standard Camera preview callback,
+        and the SurfaceTexture onFrameAvailable callback */
+    @UiThreadTest
+    public void testSetPreviewTextureBothCallbacks() throws Exception {
+        runForAllCameras(testSetPreviewTextureBothCallbacksByCamera);
+    }
+
+    private RunPerCamera testSetPreviewTextureBothCallbacksByCamera = new RunPerCamera() {
+        public void run(int cameraId) throws Exception {
+            boolean noTimeout;
+            // Check SurfaceTexture callback together with preview callback
+            // Check the order: setPreviewTexture->startPreview
+            mSurfaceTextureDone.close();
+            initializeMessageLooper(cameraId);
+            mRenderer.setCameraSizing(mCamera.getParameters().getPreviewSize());
+            mCamera.setPreviewCallback(mPreviewCallback);
+            mSurfaceTexture.setOnFrameAvailableListener(mSurfaceTextureCallback);
+            mCamera.setPreviewTexture(mSurfaceTexture);
+            mCamera.startPreview();
+
+            noTimeout = waitForSurfaceTextureDone();
+            assertTrue("Timeout waiting for new frame from SurfaceTexture!", noTimeout);
+            noTimeout = waitForPreviewDone();
+            assertTrue("Timeout waiting for new preview callback!",noTimeout);
+
+            mGLView.requestRender();
+            terminateMessageLooper();
+
+            // Check the order: startPreview->setPreviewTexture
+            mSurfaceTextureDone.close();
+            initializeMessageLooper(cameraId);
+            mRenderer.setCameraSizing(mCamera.getParameters().getPreviewSize());
+            mCamera.setPreviewCallback(mPreviewCallback);
+            mSurfaceTexture.setOnFrameAvailableListener(mSurfaceTextureCallback);
+            mCamera.startPreview();
+            mCamera.setPreviewTexture(mSurfaceTexture);
+
+            noTimeout = waitForSurfaceTextureDone();
+            assertTrue("Timeout waiting for new frame from SurfaceTexture!", noTimeout);
+            noTimeout = waitForPreviewDone();
+            assertTrue("Timeout waiting for new preview callback!", noTimeout);
+
+            mGLView.requestRender();
+
+            // Check the order: setting preview to null->startPreview->setPreviewTexture
+            mCamera.setPreviewCallback(mPreviewCallback);
+            mCamera.setPreviewTexture(null);
+            mSurfaceTexture.setOnFrameAvailableListener(mSurfaceTextureCallback);
+            mCamera.startPreview();
+            mCamera.setPreviewTexture(mSurfaceTexture);
+            noTimeout = waitForPreviewDone();
+            assertTrue(noTimeout);
+            terminateMessageLooper();
+        }
+    };
+
+    /** Test Camera.setPreviewTexture in conjunction with just the SurfaceTexture onFrameAvailable callback */
+    @UiThreadTest
+    public void testSetPreviewTextureTextureCallback() throws Exception {
+        runForAllCameras(testSetPreviewTextureTextureCallbackByCamera);
+    }
+
+    private RunPerCamera testSetPreviewTextureTextureCallbackByCamera = new RunPerCamera() {
+        public void run(int cameraId) throws Exception {
+            boolean noTimeout;
+            // Check that SurfaceTexture callbacks work with no standard
+            // preview callback
+            mSurfaceTextureCallbackResult = false;
+            mSurfaceTextureDone.close();
+            initializeMessageLooper(cameraId);
+            mSurfaceTextureBurstCallback.setBurstCount(1);
+            mSurfaceTexture.setOnFrameAvailableListener(mSurfaceTextureBurstCallback);
+            mCamera.setPreviewTexture(mSurfaceTexture);
+            mRenderer.setCameraSizing(mCamera.getParameters().getPreviewSize());
+            mCamera.startPreview();
+
+            noTimeout = waitForSurfaceTextureDone();
+            mGLView.requestRender();
+            assertTrue(noTimeout);
+
+            terminateMessageLooper();
+            assertTrue(mSurfaceTextureCallbackResult);
+
+            // Check that SurfaceTexture callbacks also work with
+            // startPreview->setPreviewTexture
+            mSurfaceTextureCallbackResult = false;
+            mSurfaceTextureDone.close();
+            initializeMessageLooper(cameraId);
+            mSurfaceTextureBurstCallback.setBurstCount(1);
+            mSurfaceTexture.setOnFrameAvailableListener(mSurfaceTextureBurstCallback);
+            mRenderer.setCameraSizing(mCamera.getParameters().getPreviewSize());
+            mCamera.startPreview();
+            mCamera.setPreviewTexture(mSurfaceTexture);
+
+            noTimeout = waitForSurfaceTextureDone();
+            assertTrue(noTimeout);
+
+            terminateMessageLooper();
+            assertTrue(mSurfaceTextureCallbackResult);
+
+            // Check that SurfaceTexture callbacks also work with
+            // null->startPreview->setPreviewTexture
+            mSurfaceTextureCallbackResult = false;
+            mSurfaceTextureDone.close();
+            initializeMessageLooper(cameraId);
+            mSurfaceTextureBurstCallback.setBurstCount(1);
+            mSurfaceTexture.setOnFrameAvailableListener(mSurfaceTextureBurstCallback);
+            mRenderer.setCameraSizing(mCamera.getParameters().getPreviewSize());
+            mCamera.setPreviewTexture(null);
+            mCamera.startPreview();
+            mCamera.setPreviewTexture(mSurfaceTexture);
+
+            noTimeout = waitForSurfaceTextureDone();
+            assertTrue(noTimeout);
+
+            terminateMessageLooper();
+            assertTrue(mSurfaceTextureCallbackResult);
+        }
+    };
+
+    /** Test all preview sizes and framerates along with SurfaceTexture-provided metadata (texture
+     * transforms and timestamps) */
+    @UiThreadTest
+    public void testCameraToSurfaceTextureMetadata() throws Exception {
+        runForAllCameras(testCameraToSurfaceTextureMetadataByCamera);
+    }
+
+    private RunPerCamera testCameraToSurfaceTextureMetadataByCamera = new RunPerCamera() {
+        public void run(int cameraId) throws Exception {
+            // Number of frames to test over
+            int kLoopCount = 100;
+            // Ignore timestamp issues before this frame
+            int kFirstTestedFrame = 10;
+            // Slop in timestamp testing, needed because timestamps are not
+            // currently being set by driver-level code so are subject to
+            // lots of variability
+            float kTestSlopMargin = 30; // ms
+
+            boolean noTimeout;
+            initializeMessageLooper(cameraId);
+            Parameters parameters = mCamera.getParameters();
+
+            mSurfaceTexture.setOnFrameAvailableListener(mSurfaceTextureBurstCallback);
+            mCamera.setPreviewTexture(mSurfaceTexture);
+
+            for (Size size: parameters.getSupportedPreviewSizes()) {
+                for (int[] fps: parameters.getSupportedPreviewFpsRange()) {
+                    if (LOGV) {
+                        Log.v(TAG, "Testing camera #" + cameraId +
+                              ", preview size:" + size.width + "x" + size.height +
+                              ", frame rate range: [" +
+                              (fps[Parameters.PREVIEW_FPS_MIN_INDEX] / 1000.) + "," +
+                              (fps[Parameters.PREVIEW_FPS_MAX_INDEX] / 1000.) + "]");
+                    }
+                    parameters.setPreviewSize(size.width, size.height);
+                    parameters.setPreviewFpsRange(fps[Parameters.PREVIEW_FPS_MIN_INDEX],
+                                                  fps[Parameters.PREVIEW_FPS_MAX_INDEX]);
+                    mCamera.setParameters(parameters);
+
+                    assertEquals(size, mCamera.getParameters().getPreviewSize());
+
+                    int[] actualFps = new int[2];
+                    mCamera.getParameters().getPreviewFpsRange(actualFps);
+                    assertEquals(fps[Parameters.PREVIEW_FPS_MIN_INDEX],
+                                 actualFps[Parameters.PREVIEW_FPS_MIN_INDEX]);
+                    assertEquals(fps[Parameters.PREVIEW_FPS_MAX_INDEX],
+                                 actualFps[Parameters.PREVIEW_FPS_MAX_INDEX]);
+
+                    mSurfaceTextureBurstCallback.setBurstCount(kLoopCount);
+                    mSurfaceTextureCallbackResult = false;
+                    mSurfaceTextureDone.close();
+
+                    mRenderer.setCameraSizing(mCamera.getParameters().getPreviewSize());
+                    if (LOGV) Log.v(TAG, "Starting preview");
+                    mCamera.startPreview();
+                    if (LOGVV) Log.v(TAG, "Preview started");
+
+                    long[] timestamps = new long[kLoopCount];
+                    for (int i = 0; i < kLoopCount; i++) {
+                        noTimeout = waitForSurfaceTextureDone();
+                        assertTrue("Timeout waiting for frame " + i +
+                                   " (burst callback thinks " +
+                                   (kLoopCount - mSurfaceTextureBurstCallback.getBurstCount()) +
+                                   ")! (Size " + size.width + "x" + size.height + ", fps [" +
+                                   (fps[Parameters.PREVIEW_FPS_MIN_INDEX] / 1000.) + ", " +
+                                   (fps[Parameters.PREVIEW_FPS_MAX_INDEX] / 1000.) + "])",
+                                   noTimeout);
+
+                        if (LOGVV) Log.v(TAG, "Frame #" + i + " completed");
+                        // Draw the frame (and update the SurfaceTexture)
+                        mGLView.requestRender();
+                        // Wait until frame is drawn, so that the SurfaceTexture has new
+                        // metadata
+                        noTimeout = mRenderer.waitForDrawDone();
+                        assertTrue(noTimeout);
+
+                        // Store timestamps for later
+                        timestamps[i] = mSurfaceTexture.getTimestamp();
+                        // Verify that the surfaceTexture transform has at least one non-zero
+                        // entry
+                        float[] transform = new float[16];
+                        mSurfaceTexture.getTransformMatrix(transform);
+                        boolean nonZero = false;
+                        for (int k = 0; k < 16; k++) {
+                            if (transform[k] != 0.f) {
+                                nonZero = true;
+                                break;
+                            }
+                        }
+                        assertTrue(nonZero);
+                    }
+                    assertTrue(mSurfaceTextureCallbackResult);
+
+                    float expectedMaxFrameDurationMs = 1000.f * 1000.f /
+                            fps[Parameters.PREVIEW_FPS_MIN_INDEX];
+                    float slopMaxFrameDurationMs = expectedMaxFrameDurationMs +
+                            kTestSlopMargin;
+                    float expectedMinFrameDurationMs = 1000.f * 1000.f /
+                            fps[Parameters.PREVIEW_FPS_MAX_INDEX];
+                    float slopMinFrameDurationMs = expectedMinFrameDurationMs  -
+                            kTestSlopMargin;
+
+                    for (int i = kFirstTestedFrame; i < kLoopCount; i++) {
+                        float frameDurationMs = (timestamps[i] - timestamps[i - 1]) / 1000000.f;
+                        if (LOGVV) {
+                            Log.v(TAG, "Frame " + i + " duration: " + frameDurationMs +
+                                  " ms, expecting [" + expectedMinFrameDurationMs + "," +
+                                  expectedMaxFrameDurationMs + "], slop range [" +
+                                  slopMinFrameDurationMs + "," + slopMaxFrameDurationMs + "].");
+                        }
+                        assertTrue("Frame " + i + " duration out of bounds! ("+
+                                   frameDurationMs + " ms, expecting [" +
+                                   slopMinFrameDurationMs + "," +
+                                   slopMaxFrameDurationMs + "] ms)",
+                                   (frameDurationMs > slopMinFrameDurationMs) &&
+                                   (frameDurationMs < slopMaxFrameDurationMs) );
+                    }
+                }
+            }
+            terminateMessageLooper();
+        } // void run(int cameraId)
+    };
+
+    /** Basic OpenGL ES 2.0 renderer to draw SurfaceTexture-sourced frames to the screen */
+    private class Renderer implements GLSurfaceView.Renderer {
+        public Renderer() {
+            mTriangleVertices =
+                    ByteBuffer.allocateDirect(mTriangleVerticesData.length * FLOAT_SIZE_BYTES).
+                    order(ByteOrder.nativeOrder()).asFloatBuffer();
+            mTriangleVertices.put(mTriangleVerticesData).position(0);
+
+            Matrix.setIdentityM(mSTMatrix, 0);
+            Matrix.setIdentityM(mMMatrix, 0);
+
+            mTextureID = 0;
+        }
+
+        public void setCameraSizing(Camera.Size previewSize) {
+            mCameraRatio = (float)previewSize.width/previewSize.height;
+        }
+
+        public boolean waitForDrawDone() {
+            if (!mDrawDone.block(WAIT_FOR_COMMAND_TO_COMPLETE) ) {
+                // timeout could be expected or unexpected. The caller will decide.
+                Log.e(TAG, "waitForDrawDone: timeout");
+                return false;
+            }
+            mDrawDone.close();
+            return true;
+        }
+
+        private final ConditionVariable mDrawDone = new ConditionVariable();
+
+        public void onDrawFrame(GL10 glUnused) {
+            if (LOGVV) Log.v(TAG, "onDrawFrame()");
+            if (CameraGLTest.this.mSurfaceTexture != null) {
+                CameraGLTest.this.mSurfaceTexture.updateTexImage();
+                CameraGLTest.this.mSurfaceTexture.getTransformMatrix(mSTMatrix);
+                mDrawDone.open();
+            }
+
+            // Ignore the passed-in GL10 interface, and use the GLES20
+            // class's static methods instead.
+            GLES20.glClear( GLES20.GL_DEPTH_BUFFER_BIT | GLES20.GL_COLOR_BUFFER_BIT);
+            GLES20.glUseProgram(mProgram);
+            checkGlError("glUseProgram");
+
+            GLES20.glActiveTexture(GLES20.GL_TEXTURE0);
+            GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES, mTextureID);
+
+            mTriangleVertices.position(TRIANGLE_VERTICES_DATA_POS_OFFSET);
+            GLES20.glVertexAttribPointer(maPositionHandle, 3, GLES20.GL_FLOAT, false,
+                                         TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mTriangleVertices);
+            checkGlError("glVertexAttribPointer maPosition");
+            GLES20.glEnableVertexAttribArray(maPositionHandle);
+            checkGlError("glEnableVertexAttribArray maPositionHandle");
+
+            mTriangleVertices.position(TRIANGLE_VERTICES_DATA_UV_OFFSET);
+            GLES20.glVertexAttribPointer(maTextureHandle, 3, GLES20.GL_FLOAT, false,
+                                         TRIANGLE_VERTICES_DATA_STRIDE_BYTES, mTriangleVertices);
+            checkGlError("glVertexAttribPointer maTextureHandle");
+            GLES20.glEnableVertexAttribArray(maTextureHandle);
+            checkGlError("glEnableVertexAttribArray maTextureHandle");
+
+            Matrix.multiplyMM(mMVPMatrix, 0, mVMatrix, 0, mMMatrix, 0);
+            Matrix.multiplyMM(mMVPMatrix, 0, mProjMatrix, 0, mMVPMatrix, 0);
+
+            GLES20.glUniformMatrix4fv(muMVPMatrixHandle, 1, false, mMVPMatrix, 0);
+            GLES20.glUniformMatrix4fv(muSTMatrixHandle, 1, false, mSTMatrix, 0);
+            GLES20.glUniform1f(muCRatioHandle, mCameraRatio);
+
+            GLES20.glDrawArrays(GLES20.GL_TRIANGLE_STRIP, 0, 4);
+            checkGlError("glDrawArrays");
+        }
+
+        public void onSurfaceChanged(GL10 glUnused, int width, int height) {
+            if (LOGV) Log.v(TAG, "onSurfaceChanged()");
+            // Ignore the passed-in GL10 interface, and use the GLES20
+            // class's static methods instead.
+            GLES20.glViewport(0, 0, width, height);
+            mRatio = (float) width / height;
+            Matrix.frustumM(mProjMatrix, 0, -mRatio, mRatio, -1, 1, 3, 7);
+        }
+
+        public void onSurfaceCreated(GL10 glUnused, EGLConfig config) {
+            if (LOGV) Log.v(TAG, "onSurfaceCreated()");
+            // Ignore the passed-in GL10 interface, and use the GLES20
+            // class's static methods instead.
+
+            /* Set up shaders and handles to their variables */
+            mProgram = createProgram(mVertexShader, mFragmentShader);
+            if (mProgram == 0) {
+                return;
+            }
+            maPositionHandle = GLES20.glGetAttribLocation(mProgram, "aPosition");
+            checkGlError("glGetAttribLocation aPosition");
+            if (maPositionHandle == -1) {
+                throw new RuntimeException("Could not get attrib location for aPosition");
+            }
+            maTextureHandle = GLES20.glGetAttribLocation(mProgram, "aTextureCoord");
+            checkGlError("glGetAttribLocation aTextureCoord");
+            if (maTextureHandle == -1) {
+                throw new RuntimeException("Could not get attrib location for aTextureCoord");
+            }
+
+            muMVPMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uMVPMatrix");
+            checkGlError("glGetUniformLocation uMVPMatrix");
+            if (muMVPMatrixHandle == -1) {
+                throw new RuntimeException("Could not get attrib location for uMVPMatrix");
+            }
+
+            muSTMatrixHandle = GLES20.glGetUniformLocation(mProgram, "uSTMatrix");
+            checkGlError("glGetUniformLocation uSTMatrix");
+            if (muMVPMatrixHandle == -1) {
+                throw new RuntimeException("Could not get attrib location for uSTMatrix");
+            }
+
+            muCRatioHandle = GLES20.glGetUniformLocation(mProgram, "uCRatio");
+            checkGlError("glGetUniformLocation uCRatio");
+            if (muMVPMatrixHandle == -1) {
+                throw new RuntimeException("Could not get attrib location for uCRatio");
+            }
+
+            /*
+             * Create our texture. This has to be done each time the
+             * surface is created.
+             */
+
+            int[] textures = new int[1];
+            GLES20.glGenTextures(1, textures, 0);
+
+            mTextureID = textures[0];
+            GLES20.glBindTexture(GL_TEXTURE_EXTERNAL_OES, mTextureID);
+            checkGlError("glBindTexture mTextureID");
+
+            // Can't do mipmapping with camera source
+            GLES20.glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MIN_FILTER,
+                                   GLES20.GL_NEAREST);
+            GLES20.glTexParameterf(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_MAG_FILTER,
+                                   GLES20.GL_LINEAR);
+            // Clamp to edge is the only option
+            GLES20.glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_S,
+                                   GLES20.GL_CLAMP_TO_EDGE);
+            GLES20.glTexParameteri(GL_TEXTURE_EXTERNAL_OES, GLES20.GL_TEXTURE_WRAP_T,
+                                   GLES20.GL_CLAMP_TO_EDGE);
+            checkGlError("glTexParameteri mTextureID");
+
+            Matrix.setLookAtM(mVMatrix, 0, 0, 0, 4f, 0f, 0f, 0f, 0f, 1.0f, 0.0f);
+        }
+
+        public int getTextureID() {
+            return mTextureID;
+        }
+
+        private int loadShader(int shaderType, String source) {
+            int shader = GLES20.glCreateShader(shaderType);
+            if (shader != 0) {
+                GLES20.glShaderSource(shader, source);
+                GLES20.glCompileShader(shader);
+                int[] compiled = new int[1];
+                GLES20.glGetShaderiv(shader, GLES20.GL_COMPILE_STATUS, compiled, 0);
+                if (compiled[0] == 0) {
+                    Log.e(TAG, "Could not compile shader " + shaderType + ":");
+                    Log.e(TAG, GLES20.glGetShaderInfoLog(shader));
+                    GLES20.glDeleteShader(shader);
+                    shader = 0;
+                }
+            }
+            return shader;
+        }
+
+        private int createProgram(String vertexSource, String fragmentSource) {
+            int vertexShader = loadShader(GLES20.GL_VERTEX_SHADER, vertexSource);
+            if (vertexShader == 0) {
+                return 0;
+            }
+            int pixelShader = loadShader(GLES20.GL_FRAGMENT_SHADER, fragmentSource);
+            if (pixelShader == 0) {
+                return 0;
+            }
+
+            int program = GLES20.glCreateProgram();
+            if (program != 0) {
+                GLES20.glAttachShader(program, vertexShader);
+                checkGlError("glAttachShader");
+                GLES20.glAttachShader(program, pixelShader);
+                checkGlError("glAttachShader");
+                GLES20.glLinkProgram(program);
+                int[] linkStatus = new int[1];
+                GLES20.glGetProgramiv(program, GLES20.GL_LINK_STATUS, linkStatus, 0);
+                if (linkStatus[0] != GLES20.GL_TRUE) {
+                    Log.e(TAG, "Could not link program: ");
+                    Log.e(TAG, GLES20.glGetProgramInfoLog(program));
+                    GLES20.glDeleteProgram(program);
+                    program = 0;
+                }
+            }
+            return program;
+        }
+
+        private void checkGlError(String op) {
+            int error;
+            while ((error = GLES20.glGetError()) != GLES20.GL_NO_ERROR) {
+                Log.e(TAG, op + ": glError " + error);
+                throw new RuntimeException(op + ": glError " + error);
+            }
+        }
+
+        private static final int FLOAT_SIZE_BYTES = 4;
+        private static final int TRIANGLE_VERTICES_DATA_STRIDE_BYTES = 5 * FLOAT_SIZE_BYTES;
+        private static final int TRIANGLE_VERTICES_DATA_POS_OFFSET = 0;
+        private static final int TRIANGLE_VERTICES_DATA_UV_OFFSET = 3;
+        private final float[] mTriangleVerticesData = {
+            // X, Y, Z, U, V
+            -1.0f, -1.0f, 0, 0.f, 0.f,
+            1.0f, -1.0f, 0, 1.f, 0.f,
+            -1.0f,  1.0f, 0, 0.f, 1.f,
+            1.0f,   1.0f, 0, 1.f, 1.f,
+        };
+
+        private FloatBuffer mTriangleVertices;
+
+        private final String mVertexShader =
+                "uniform mat4 uMVPMatrix;\n" +
+                "uniform mat4 uSTMatrix;\n" +
+                "uniform float uCRatio;\n" +
+                "attribute vec4 aPosition;\n" +
+                "attribute vec4 aTextureCoord;\n" +
+                "varying vec2 vTextureCoord;\n" +
+                "void main() {\n" +
+                "  gl_Position = vec4(uCRatio,1,1,1) * uMVPMatrix * aPosition;\n" +
+                "  vTextureCoord = (uSTMatrix * aTextureCoord).xy;\n" +
+                "}\n";
+
+        private final String mFragmentShader =
+                "#extension GL_OES_EGL_image_external : require\n" +
+                "precision mediump float;\n" +
+                "varying vec2 vTextureCoord;\n" +
+                "uniform samplerExternalOES sTexture;\n" +
+                "void main() {\n" +
+                "  gl_FragColor = texture2D(sTexture, vTextureCoord);\n" +
+                "}\n";
+
+        private float[] mMVPMatrix = new float[16];
+        private float[] mProjMatrix = new float[16];
+        private float[] mMMatrix = new float[16];
+        private float[] mVMatrix = new float[16];
+        private float[] mSTMatrix = new float[16];
+
+        private int mProgram;
+        private int mTextureID;
+        private int muMVPMatrixHandle;
+        private int muSTMatrixHandle;
+        private int muCRatioHandle;
+        private int maPositionHandle;
+        private int maTextureHandle;
+
+        private float mRatio = 1.0f;
+        private float mCameraRatio = 1.0f;
+
+        private Context mContext;
+        private static final String TAG = "CameraGLTest.Renderer";
+
+        // Magic key
+        private static final int GL_TEXTURE_EXTERNAL_OES = 0x8D65;
+    }
+
+}
diff --git a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
index a336328..195589f 100644
--- a/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
+++ b/tests/tests/hardware/src/android/hardware/cts/CameraTest.java
@@ -24,7 +24,9 @@
 import android.graphics.Bitmap;
 import android.graphics.BitmapFactory;
 import android.graphics.ImageFormat;
+import android.graphics.Rect;
 import android.hardware.Camera;
+import android.hardware.Camera.Area;
 import android.hardware.Camera.CameraInfo;
 import android.hardware.Camera.ErrorCallback;
 import android.hardware.Camera.Parameters;
@@ -65,17 +67,26 @@
             "/test.jpg";
     private byte[] mJpegData;
 
-    private boolean mPreviewCallbackResult = false;
+    private static final int PREVIEW_CALLBACK_NOT_RECEIVED = 0;
+    private static final int PREVIEW_CALLBACK_RECEIVED = 1;
+    private static final int PREVIEW_CALLBACK_DATA_NULL = 2;
+    private static final int PREVIEW_CALLBACK_INVALID_FRAME_SIZE = 3;
+    private int mPreviewCallbackResult = PREVIEW_CALLBACK_NOT_RECEIVED;
+
     private boolean mShutterCallbackResult = false;
     private boolean mRawPictureCallbackResult = false;
     private boolean mJpegPictureCallbackResult = false;
-    private boolean mErrorCallbackResult = false;
+    private static final int NO_ERROR = -1;
+    private int mCameraErrorCode = NO_ERROR;
     private boolean mAutoFocusSucceeded = false;
 
     private static final int WAIT_FOR_COMMAND_TO_COMPLETE = 1500;  // Milliseconds.
     private static final int WAIT_FOR_FOCUS_TO_COMPLETE = 3000;
     private static final int WAIT_FOR_SNAPSHOT_TO_COMPLETE = 5000;
 
+    private static final int FOCUS_AREA = 0;
+    private static final int METERING_AREA = 1;
+
     private PreviewCallback mPreviewCallback = new PreviewCallback();
     private TestShutterCallback mShutterCallback = new TestShutterCallback();
     private RawPictureCallback mRawPictureCallback = new RawPictureCallback();
@@ -115,7 +126,7 @@
      * Initializes the message looper so that the Camera object can
      * receive the callback messages.
      */
-    private void initializeMessageLooper(final int cameraId) {
+    private void initializeMessageLooper(final int cameraId) throws IOException {
         final ConditionVariable startDone = new ConditionVariable();
         new Thread() {
             @Override
@@ -126,7 +137,12 @@
                 // Save the looper so that we can terminate this thread
                 // after we are done with it.
                 mLooper = Looper.myLooper();
-                mCamera = Camera.open(cameraId);
+                try {
+                    mCamera = Camera.open(cameraId);
+                    mCamera.setErrorCallback(mErrorCallback);
+                } catch (RuntimeException e) {
+                    Log.e(TAG, "Fail to open camera." + e);
+                }
                 Log.v(TAG, "camera is opened");
                 startDone.open();
                 Looper.loop(); // Blocks forever until Looper.quit() is called.
@@ -139,6 +155,8 @@
             Log.v(TAG, "initializeMessageLooper: start timeout");
             fail("initializeMessageLooper: start timeout");
         }
+        assertNotNull("Fail to open camera.", mCamera);
+        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
     }
 
     /*
@@ -154,18 +172,29 @@
         mLooper.getThread().join();
         mCamera.release();
         mCamera = null;
+        assertEquals("Got camera error callback.", NO_ERROR, mCameraErrorCode);
     }
 
     //Implement the previewCallback
     private final class PreviewCallback
             implements android.hardware.Camera.PreviewCallback {
         public void onPreviewFrame(byte [] data, Camera camera) {
-            assertNotNull(data);
+            if (data == null) {
+                mPreviewCallbackResult = PREVIEW_CALLBACK_DATA_NULL;
+                mPreviewDone.open();
+                return;
+            }
             Size size = camera.getParameters().getPreviewSize();
             int format = camera.getParameters().getPreviewFormat();
             int bitsPerPixel = ImageFormat.getBitsPerPixel(format);
-            assertEquals(size.width * size.height * bitsPerPixel / 8, data.length);
-            mPreviewCallbackResult = true;
+            if (size.width * size.height * bitsPerPixel / 8 != data.length) {
+                Log.e(TAG, "Invalid frame size " + data.length + ". width=" + size.width
+                        + ". height=" + size.height + ". bitsPerPixel=" + bitsPerPixel);
+                mPreviewCallbackResult = PREVIEW_CALLBACK_INVALID_FRAME_SIZE;
+                mPreviewDone.open();
+                return;
+            }
+            mPreviewCallbackResult = PREVIEW_CALLBACK_RECEIVED;
             mCamera.stopPreview();
             if (LOGV) Log.v(TAG, "notify the preview callback");
             mPreviewDone.open();
@@ -184,11 +213,7 @@
     //Implement the RawPictureCallback
     private final class RawPictureCallback implements PictureCallback {
         public void onPictureTaken(byte [] rawData, Camera camera) {
-            if (rawData != null) {
-                mRawPictureCallbackResult = true;
-            } else {
-                mRawPictureCallbackResult = false;
-            }
+            mRawPictureCallbackResult = true;
             if (LOGV) Log.v(TAG, "RawPictureCallback callback");
         }
     }
@@ -224,8 +249,8 @@
     // Implement the ErrorCallback
     private final class TestErrorCallback implements ErrorCallback {
         public void onError(int error, Camera camera) {
-            mErrorCallbackResult = true;
-            fail("Got camera error from ErrorCallback: " + error);
+            Log.e(TAG, "Got camera error=" + error);
+            mCameraErrorCode = error;
         }
     }
 
@@ -266,7 +291,6 @@
     }
 
     private void checkPreviewCallback() throws Exception {
-        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
         if (LOGV) Log.v(TAG, "check preview callback");
         mCamera.startPreview();
         waitForPreviewDone();
@@ -323,7 +347,6 @@
     private void testTakePictureByCamera(int cameraId) throws Exception {
         initializeMessageLooper(cameraId);
         Size pictureSize = mCamera.getParameters().getPictureSize();
-        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
         mCamera.startPreview();
         mCamera.autoFocus(mAutoFocusCallback);
         assertTrue(waitForFocusDone());
@@ -331,8 +354,9 @@
         mCamera.takePicture(mShutterCallback, mRawPictureCallback, mJpegPictureCallback);
         waitForSnapshotDone();
         terminateMessageLooper();
-        assertTrue(mShutterCallbackResult);
-        assertTrue(mJpegPictureCallbackResult);
+        assertTrue("Shutter callback not received", mShutterCallbackResult);
+        assertTrue("Raw picture callback not received", mRawPictureCallbackResult);
+        assertTrue("Jpeg picture callback not recieved", mJpegPictureCallbackResult);
         assertNotNull(mJpegData);
         BitmapFactory.Options bmpOptions = new BitmapFactory.Options();
         bmpOptions.inJustDecodeBounds = true;
@@ -390,28 +414,27 @@
     private void testPreviewCallbackByCamera(int cameraId) throws Exception {
         initializeMessageLooper(cameraId);
         mCamera.setPreviewCallback(mPreviewCallback);
-        mCamera.setErrorCallback(mErrorCallback);
         checkPreviewCallback();
         terminateMessageLooper();
-        assertTrue(mPreviewCallbackResult);
+        assertEquals(PREVIEW_CALLBACK_RECEIVED, mPreviewCallbackResult);
 
-        mPreviewCallbackResult = false;
+        mPreviewCallbackResult = PREVIEW_CALLBACK_NOT_RECEIVED;
         initializeMessageLooper(cameraId);
         checkPreviewCallback();
         terminateMessageLooper();
-        assertFalse(mPreviewCallbackResult);
+        assertEquals(PREVIEW_CALLBACK_NOT_RECEIVED, mPreviewCallbackResult);
 
         // Test all preview sizes.
         initializeMessageLooper(cameraId);
         Parameters parameters = mCamera.getParameters();
         for (Size size: parameters.getSupportedPreviewSizes()) {
-            mPreviewCallbackResult = false;
+            mPreviewCallbackResult = PREVIEW_CALLBACK_NOT_RECEIVED;
             mCamera.setPreviewCallback(mPreviewCallback);
             parameters.setPreviewSize(size.width, size.height);
             mCamera.setParameters(parameters);
             assertEquals(size, mCamera.getParameters().getPreviewSize());
             checkPreviewCallback();
-            assertTrue(mPreviewCallbackResult);
+            assertEquals(PREVIEW_CALLBACK_RECEIVED, mPreviewCallbackResult);
             try {
                 // Wait for a while to throw away the remaining preview frames.
                 Thread.sleep(1000);
@@ -442,13 +465,13 @@
         mCamera.setOneShotPreviewCallback(mPreviewCallback);
         checkPreviewCallback();
         terminateMessageLooper();
-        assertTrue(mPreviewCallbackResult);
+        assertEquals(PREVIEW_CALLBACK_RECEIVED, mPreviewCallbackResult);
 
-        mPreviewCallbackResult = false;
+        mPreviewCallbackResult = PREVIEW_CALLBACK_NOT_RECEIVED;
         initializeMessageLooper(cameraId);
         checkPreviewCallback();
         terminateMessageLooper();
-        assertFalse(mPreviewCallbackResult);
+        assertEquals(PREVIEW_CALLBACK_NOT_RECEIVED, mPreviewCallbackResult);
     }
 
     @TestTargetNew(
@@ -475,28 +498,28 @@
         mCamera.setPreviewDisplay(holder);
         waitForPreviewDone();
         terminateMessageLooper();
-        assertTrue(mPreviewCallbackResult);
+        assertEquals(PREVIEW_CALLBACK_RECEIVED, mPreviewCallbackResult);
 
         // Check the order: setPreviewDisplay->startPreview.
         initializeMessageLooper(cameraId);
-        mPreviewCallbackResult = false;
+        mPreviewCallbackResult = PREVIEW_CALLBACK_NOT_RECEIVED;
         mCamera.setOneShotPreviewCallback(mPreviewCallback);
         mCamera.setPreviewDisplay(holder);
         mCamera.startPreview();
         waitForPreviewDone();
         mCamera.stopPreview();
-        assertTrue(mPreviewCallbackResult);
+        assertEquals(PREVIEW_CALLBACK_RECEIVED, mPreviewCallbackResult);
 
         // Check the order: setting preview display to null->startPreview->
         // setPreviewDisplay.
-        mPreviewCallbackResult = false;
+        mPreviewCallbackResult = PREVIEW_CALLBACK_NOT_RECEIVED;
         mCamera.setOneShotPreviewCallback(mPreviewCallback);
         mCamera.setPreviewDisplay(null);
         mCamera.startPreview();
         mCamera.setPreviewDisplay(holder);
         waitForPreviewDone();
         terminateMessageLooper();
-        assertTrue(mPreviewCallbackResult);
+        assertEquals(PREVIEW_CALLBACK_RECEIVED, mPreviewCallbackResult);
     }
 
     @TestTargetNew(
@@ -531,7 +554,6 @@
         }
 
         // Start preview.
-        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
         mCamera.startPreview();
 
         // Check setting orientation during preview is not allowed.
@@ -802,7 +824,6 @@
         assertTrue(sizes.contains(mCamera.new Size(0, 0)));
 
         // Test if the thumbnail size matches the setting.
-        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
         mCamera.startPreview();
         mCamera.takePicture(mShutterCallback, mRawPictureCallback, mJpegPictureCallback);
         waitForSnapshotDone();
@@ -844,7 +865,6 @@
     private void testJpegExifByCamera(int cameraId) throws Exception {
         initializeMessageLooper(cameraId);
         Camera.Parameters parameters = mCamera.getParameters();
-        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
         mCamera.startPreview();
         double focalLength = (double)parameters.getFocalLength();
         mCamera.takePicture(mShutterCallback, mRawPictureCallback, mJpegPictureCallback);
@@ -945,20 +965,7 @@
                 CamcorderProfile.QUALITY_LOW);
 
         // Set the preview size.
-        if (parameters.getSupportedVideoSizes() == null) {
-            parameters.setPreviewSize(profile.videoFrameWidth,
-                    profile.videoFrameHeight);
-        } else {  // Driver supports separates outputs for preview and video.
-            List<Size> sizes = parameters.getSupportedPreviewSizes();
-            Size preferred = parameters.getPreferredPreviewSizeForVideo();
-            int product = preferred.width * preferred.height;
-            for (Size size: sizes) {
-                if (size.width * size.height <= product) {
-                    parameters.setPreviewSize(size.width, size.height);
-                    break;
-                }
-            }
-        }
+        setPreviewSizeByProfile(parameters, profile);
 
         mCamera.setParameters(parameters);
         mCamera.setPreviewDisplay(surfaceHolder);
@@ -987,6 +994,23 @@
         terminateMessageLooper();
     }
 
+    private void setPreviewSizeByProfile(Parameters parameters, CamcorderProfile profile) {
+        if (parameters.getSupportedVideoSizes() == null) {
+            parameters.setPreviewSize(profile.videoFrameWidth,
+                    profile.videoFrameHeight);
+        } else {  // Driver supports separates outputs for preview and video.
+            List<Size> sizes = parameters.getSupportedPreviewSizes();
+            Size preferred = parameters.getPreferredPreviewSizeForVideo();
+            int product = preferred.width * preferred.height;
+            for (Size size: sizes) {
+                if (size.width * size.height <= product) {
+                    parameters.setPreviewSize(size.width, size.height);
+                    break;
+                }
+            }
+        }
+    }
+
     private void recordVideo(CamcorderProfile profile,
             SurfaceHolder holder) throws Exception {
         MediaRecorder recorder = new MediaRecorder();
@@ -1000,7 +1024,40 @@
             recorder.setPreviewDisplay(holder.getSurface());
             recorder.prepare();
             recorder.start();
-            Thread.sleep(5000);
+
+            // Apps can use the camera after start since API level 13.
+            Parameters parameters = mCamera.getParameters();
+            if (parameters.isZoomSupported()) {
+               if (parameters.getMaxZoom() > 0) {
+                   parameters.setZoom(1);
+                   mCamera.setParameters(parameters);
+                   parameters.setZoom(0);
+                   mCamera.setParameters(parameters);
+               }
+            }
+            if (parameters.isSmoothZoomSupported()) {
+                if (parameters.getMaxZoom() > 0) {
+                    ZoomListener zoomListener = new ZoomListener();
+                    mCamera.setZoomChangeListener(zoomListener);
+                    mCamera.startSmoothZoom(1);
+                    assertTrue(zoomListener.mZoomDone.block(1000));
+                }
+            }
+
+            try {
+                mCamera.takePicture(null, null, null);
+                fail("takePicture should not succeed during recording.");
+            } catch(RuntimeException e) {
+                // expected
+            }
+            try {
+                mCamera.unlock();
+                fail("unlock should not succeed during recording.");
+            } catch(RuntimeException e) {
+                // expected
+            }
+
+            Thread.sleep(2000);
             recorder.stop();
         } finally {
             recorder.release();
@@ -1055,6 +1112,8 @@
             mCamera.setPreviewCallbackWithBuffer(callback);
             mCamera.startPreview();
             waitForPreviewDone();
+            assertFalse(callback.mPreviewDataNull);
+            assertFalse(callback.mInvalidData);
             assertEquals(1, callback.mNumCbWithBuffer1);
             assertEquals(1, callback.mNumCbWithBuffer2);
             assertEquals(0, callback.mNumCbWithBuffer3);
@@ -1062,6 +1121,8 @@
             // Test if preview callback with buffer still works during preview.
             mCamera.addCallbackBuffer(callback.mBuffer3);
             waitForPreviewDone();
+            assertFalse(callback.mPreviewDataNull);
+            assertFalse(callback.mInvalidData);
             assertEquals(1, callback.mNumCbWithBuffer1);
             assertEquals(1, callback.mNumCbWithBuffer2);
             assertEquals(1, callback.mNumCbWithBuffer3);
@@ -1075,8 +1136,14 @@
             implements android.hardware.Camera.PreviewCallback {
         public int mNumCbWithBuffer1, mNumCbWithBuffer2, mNumCbWithBuffer3;
         public byte[] mBuffer1, mBuffer2, mBuffer3;
+        public boolean mPreviewDataNull, mInvalidData;
         public void onPreviewFrame(byte[] data, Camera camera) {
-            assertNotNull(data);
+            if (data == null) {
+                Log.e(TAG, "Preview data is null!");
+                mPreviewDataNull = true;
+                mPreviewDone.open();
+                return;
+            }
             if (data == mBuffer1) {
                 mNumCbWithBuffer1++;
             } else if (data == mBuffer2) {
@@ -1084,7 +1151,10 @@
             } else if (data == mBuffer3) {
                 mNumCbWithBuffer3++;
             } else {
-                fail("Invalid byte array.");
+                Log.e(TAG, "Invalid byte array.");
+                mInvalidData = true;
+                mPreviewDone.open();
+                return;
             }
 
             if ((mNumCbWithBuffer1 == 1 && mNumCbWithBuffer2 == 1)
@@ -1094,41 +1164,21 @@
         }
     }
 
-    @TestTargets({
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            method = "startSmoothZoom",
-            args = {int.class}
-        ),
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            method = "stopSmoothZoom",
-            args = {}
-        ),
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            method = "setZoomChangeListener",
-            args = {android.hardware.Camera.OnZoomChangeListener.class}
-        )
-    })
     @UiThreadTest
-    public void testZoom() throws Exception {
+    public void testImmediateZoom() throws Exception {
         int nCameras = Camera.getNumberOfCameras();
         for (int id = 0; id < nCameras; id++) {
             Log.v(TAG, "Camera id=" + id);
-            initializeMessageLooper(id);
-            testImmediateZoom();
-            testSmoothZoom();
-            terminateMessageLooper();
+            testImmediateZoomByCamera(id);
         }
     }
 
-    private void testImmediateZoom() throws Exception {
+    private void testImmediateZoomByCamera(int id) throws Exception {
+        initializeMessageLooper(id);
+
         Parameters parameters = mCamera.getParameters();
         if (!parameters.isZoomSupported()) return;
 
-        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
-
         // Test the zoom parameters.
         assertEquals(0, parameters.getZoom());  // default zoom should be 0.
         for (Size size: parameters.getSupportedPreviewSizes()) {
@@ -1170,15 +1220,44 @@
                                 mJpegPictureCallback);
             waitForSnapshotDone();
         }
+
+        terminateMessageLooper();
     }
 
-    private void testSmoothZoom() throws Exception {
+    @TestTargets({
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "startSmoothZoom",
+            args = {int.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "stopSmoothZoom",
+            args = {}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "setZoomChangeListener",
+            args = {android.hardware.Camera.OnZoomChangeListener.class}
+        )
+    })
+    @UiThreadTest
+    public void testSmoothZoom() throws Exception {
+        int nCameras = Camera.getNumberOfCameras();
+        for (int id = 0; id < nCameras; id++) {
+            Log.v(TAG, "Camera id=" + id);
+            testSmoothZoomByCamera(id);
+        }
+    }
+
+    private void testSmoothZoomByCamera(int id) throws Exception {
+        initializeMessageLooper(id);
+
         Parameters parameters = mCamera.getParameters();
         if (!parameters.isSmoothZoomSupported()) return;
         assertTrue(parameters.isZoomSupported());
 
         ZoomListener zoomListener = new ZoomListener();
-        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
         mCamera.setZoomChangeListener(zoomListener);
         mCamera.startPreview();
         waitForPreviewDone();
@@ -1207,24 +1286,31 @@
         assertEquals(maxZoom, mCamera.getParameters().getZoom());
         assertEquals(maxZoom, zoomListener.mValues.size());
         for(int i = 0; i < maxZoom; i++) {
-            // Make sure we get all the callbacks in order.
-            assertEquals(i + 1, zoomListener.mValues.get(i).intValue());
+            int value = zoomListener.mValues.get(i);
+            boolean stopped = zoomListener.mStopped.get(i);
+            // Make sure we get all the zoom values in order.
+            assertEquals(i + 1, value);
+            // All "stopped" except the last should be false.
+            assertEquals(i == maxZoom - 1, stopped);
         }
 
         // Test startSmoothZoom. Make sure we get all the callbacks.
         if (maxZoom > 1) {
-            zoomListener.mValues = new ArrayList<Integer>();
-            zoomListener.mStopped = false;
+            zoomListener.mValues.clear();
+            zoomListener.mStopped.clear();
             Log.e(TAG, "zoomListener.mStopped = " + zoomListener.mStopped);
             zoomListener.mZoomDone.close();
             mCamera.startSmoothZoom(maxZoom / 2);
             assertTrue(zoomListener.mZoomDone.block(5000));
             assertEquals(maxZoom / 2, mCamera.getParameters().getZoom());
             assertEquals(maxZoom - (maxZoom / 2), zoomListener.mValues.size());
-            int i = maxZoom - 1;
-            for(Integer value: zoomListener.mValues) {
-                assertEquals(i, value.intValue());
-                i--;
+            for(int i = 0; i < zoomListener.mValues.size(); i++) {
+                int value = zoomListener.mValues.get(i);
+                boolean stopped = zoomListener.mStopped.get(i);
+                // Make sure we get all the zoom values in order.
+                assertEquals(maxZoom - 1 - i, value);
+                // All "stopped" except the last should be false.
+                assertEquals(i == zoomListener.mValues.size() - 1, stopped);
             }
         }
 
@@ -1237,8 +1323,8 @@
         }
 
         // Test stopSmoothZoom.
-        zoomListener.mValues = new ArrayList<Integer>();
-        zoomListener.mStopped = false;
+        zoomListener.mValues.clear();
+        zoomListener.mStopped.clear();
         zoomListener.mZoomDone.close();
         parameters.setZoom(0);
         mCamera.setParameters(parameters);
@@ -1248,21 +1334,29 @@
         assertTrue(zoomListener.mZoomDone.block(5000));
         assertEquals(zoomListener.mValues.size(), mCamera.getParameters().getZoom());
         for(int i = 0; i < zoomListener.mValues.size() - 1; i++) {
+            int value = zoomListener.mValues.get(i);
+            boolean stopped = zoomListener.mStopped.get(i);
             // Make sure we get all the callbacks in order (except the last).
-            assertEquals(i + 1, zoomListener.mValues.get(i).intValue());
+            assertEquals(i + 1, value);
+            // All "stopped" except the last should be false. stopSmoothZoom has been called. So the
+            // last "stopped" can be true or false.
+            if (i != zoomListener.mValues.size() - 1) {
+                assertFalse(stopped);
+            }
         }
+
+        terminateMessageLooper();
     }
 
     private final class ZoomListener
             implements android.hardware.Camera.OnZoomChangeListener {
         public ArrayList<Integer> mValues = new ArrayList<Integer>();
-        public boolean mStopped;
+        public ArrayList<Boolean> mStopped = new ArrayList<Boolean>();
         public final ConditionVariable mZoomDone = new ConditionVariable();
 
         public void onZoomChange(int value, boolean stopped, Camera camera) {
             mValues.add(value);
-            assertFalse(mStopped);
-            mStopped = stopped;
+            mStopped.add(stopped);
             if (stopped) {
                 mZoomDone.open();
             }
@@ -1280,7 +1374,6 @@
 
     private void testFocusDistancesByCamera(int cameraId) throws Exception {
         initializeMessageLooper(cameraId);
-        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
         mCamera.startPreview();
         waitForPreviewDone();
         Parameters parameters = mCamera.getParameters();
@@ -1365,7 +1458,6 @@
 
     private void testCancelAutofocusByCamera(int cameraId) throws Exception {
         initializeMessageLooper(cameraId);
-        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
         mCamera.startPreview();
 
         // No op if autofocus is not in progress.
@@ -1508,18 +1600,29 @@
 
     private void testPreviewPictureSizesCombinationByCamera(int cameraId) throws Exception {
         initializeMessageLooper(cameraId);
-        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
         Parameters parameters = mCamera.getParameters();
         PreviewCbForPreviewPictureSizesCombination callback =
             new PreviewCbForPreviewPictureSizesCombination();
 
-        // Test all combination of preview sizes and picture sizes.
-        for (Size previewSize: parameters.getSupportedPreviewSizes()) {
-            for (Size pictureSize: parameters.getSupportedPictureSizes()) {
+        // Test combination of preview sizes and picture sizes. Pick four of each to test.
+        // Do not test all combinations because it will timeout. Four is just a small number
+        // and the test will not timeout.
+        List<Size> previewSizes = parameters.getSupportedPreviewSizes();
+        List<Size> pictureSizes = parameters.getSupportedPictureSizes();
+        int previewSizeTestCount = Math.min(previewSizes.size(), 4);
+        int pictureSizeTestCount = Math.min(pictureSizes.size(), 4);
+        // Calculate the step so that the first one and the last one are always tested.
+        float previewSizeIndexStep = (float) (previewSizes.size() - 1) / (previewSizeTestCount - 1);
+        float pictureSizeIndexStep = (float) (pictureSizes.size() - 1) / (pictureSizeTestCount - 1);
+        for (int i = 0; i < previewSizeTestCount; i++) {
+            for (int j = 0; j < pictureSizeTestCount; j++) {
+                Size previewSize = previewSizes.get(Math.round(previewSizeIndexStep * i));
+                Size pictureSize = pictureSizes.get(Math.round(pictureSizeIndexStep * j));
                 Log.v(TAG, "Test previewSize=(" + previewSize.width + "," +
                         previewSize.height + ") pictureSize=(" +
                         pictureSize.width + "," + pictureSize.height + ")");
-                mPreviewCallbackResult = false;
+                mPreviewCallbackResult = PREVIEW_CALLBACK_NOT_RECEIVED;
+                mCamera.setPreviewCallback(callback);
                 callback.expectedPreviewSize = previewSize;
                 parameters.setPreviewSize(previewSize.width, previewSize.height);
                 parameters.setPictureSize(pictureSize.width, pictureSize.height);
@@ -1529,9 +1632,8 @@
 
                 // Check if the preview size is the same as requested.
                 mCamera.startPreview();
-                mCamera.setOneShotPreviewCallback(callback);
                 waitForPreviewDone();
-                assertTrue(mPreviewCallbackResult);
+                assertEquals(PREVIEW_CALLBACK_RECEIVED, mPreviewCallbackResult);
 
                 // Check if the picture size is the same as requested.
                 mCamera.takePicture(mShutterCallback, mRawPictureCallback, mJpegPictureCallback);
@@ -1552,18 +1654,31 @@
             implements android.hardware.Camera.PreviewCallback {
         public Size expectedPreviewSize;
         public void onPreviewFrame(byte[] data, Camera camera) {
-            assertNotNull(data);
+            if (data == null) {
+                mPreviewCallbackResult = PREVIEW_CALLBACK_DATA_NULL;
+                mPreviewDone.open();
+                return;
+            }
             Size size = camera.getParameters().getPreviewSize();
-            assertEquals(expectedPreviewSize, size);
             int format = camera.getParameters().getPreviewFormat();
             int bitsPerPixel = ImageFormat.getBitsPerPixel(format);
-            assertEquals(size.width * size.height * bitsPerPixel / 8, data.length);
+            if (!expectedPreviewSize.equals(size) ||
+                    size.width * size.height * bitsPerPixel / 8 != data.length) {
+                Log.e(TAG, "Expected preview width=" + expectedPreviewSize.width + ", height="
+                        + expectedPreviewSize.height + ". Actual width=" + size.width + ", height="
+                        + size.height);
+                Log.e(TAG, "Frame data length=" + data.length + ". bitsPerPixel=" + bitsPerPixel);
+                mPreviewCallbackResult = PREVIEW_CALLBACK_INVALID_FRAME_SIZE;
+                mPreviewDone.open();
+                return;
+            }
             camera.setPreviewCallback(null);
-            mPreviewCallbackResult = true;
+            mPreviewCallbackResult = PREVIEW_CALLBACK_RECEIVED;
             mPreviewDone.open();
         }
     }
 
+    @UiThreadTest
     public void testPreviewFpsRange() throws Exception {
         int nCameras = Camera.getNumberOfCameras();
         for (int id = 0; id < nCameras; id++) {
@@ -1574,7 +1689,6 @@
 
     private void testPreviewFpsRangeByCamera(int cameraId) throws Exception {
         initializeMessageLooper(cameraId);
-        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
 
         // Test if the parameters exists and minimum fps <= maximum fps.
         int[] defaultFps = new int[2];
@@ -1789,7 +1903,6 @@
 
             // Make sure scene mode settings are consistent before preview and
             // after preview.
-            mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
             mCamera.startPreview();
             waitForPreviewDone();
             for (int i = 0; i < supportedSceneModes.size(); i++) {
@@ -1906,6 +2019,7 @@
         terminateMessageLooper();
     }
 
+    @UiThreadTest
     public void testGetParameterDuringFocus() throws Exception {
         int nCameras = Camera.getNumberOfCameras();
         for (int id = 0; id < nCameras; id++) {
@@ -1916,8 +2030,6 @@
 
     private void testGetParameterDuringFocusByCamera(int cameraId) throws Exception {
         initializeMessageLooper(cameraId);
-        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
-        mCamera.setErrorCallback(mErrorCallback);
         mCamera.startPreview();
         Parameters parameters = mCamera.getParameters();
         for (String focusMode: parameters.getSupportedFocusModes()) {
@@ -1941,6 +2053,7 @@
         terminateMessageLooper();
     }
 
+    @UiThreadTest
     public void testPreviewFormats() throws Exception {
         int nCameras = Camera.getNumberOfCameras();
         for (int id = 0; id < nCameras; id++) {
@@ -1951,8 +2064,6 @@
 
     private void testPreviewFormatsByCamera(int cameraId) throws Exception {
         initializeMessageLooper(cameraId);
-        mCamera.setPreviewDisplay(getActivity().getSurfaceView().getHolder());
-        mCamera.setErrorCallback(mErrorCallback);
         Parameters parameters = mCamera.getParameters();
         for (int format: parameters.getSupportedPreviewFormats()) {
             Log.v(TAG, "Test preview format " + format);
@@ -1961,8 +2072,338 @@
             mCamera.setOneShotPreviewCallback(mPreviewCallback);
             mCamera.startPreview();
             waitForPreviewDone();
-            assertTrue(mPreviewCallbackResult);
+            assertEquals(PREVIEW_CALLBACK_RECEIVED, mPreviewCallbackResult);
         }
         terminateMessageLooper();
     }
+
+    @UiThreadTest
+    public void testMultiCameraRelease() throws Exception {
+        // Verify that multiple cameras exist, and that they can be opened at the same time
+        if (LOGV) Log.v(TAG, "testMultiCameraRelease: Checking pre-conditions.");
+        int nCameras = Camera.getNumberOfCameras();
+        if (nCameras < 2) {
+            Log.i(TAG, "Test multi-camera release: Skipping test because only 1 camera available");
+            return;
+        }
+
+        Camera testCamera0 = Camera.open(0);
+        Camera testCamera1 = null;
+        try {
+            testCamera1 = Camera.open(1);
+        } catch (RuntimeException e) {
+            // Can't open two cameras at once
+            Log.i(TAG, "testMultiCameraRelease: Skipping test because only 1 camera "+
+                  "could be opened at once. Second open threw: " + e);
+            testCamera0.release();
+            return;
+        }
+        testCamera0.release();
+        testCamera1.release();
+
+        // Start first camera
+        if (LOGV) Log.v(TAG, "testMultiCameraRelease: Opening camera 0");
+        initializeMessageLooper(0);
+        SimplePreviewStreamCb callback0 = new SimplePreviewStreamCb(0);
+        mCamera.setPreviewCallback(callback0);
+        if (LOGV) Log.v(TAG, "testMultiCameraRelease: Starting preview on camera 0");
+        mCamera.startPreview();
+        // Run preview for a bit
+        for (int f = 0; f < 100; f++) {
+            mPreviewDone.close();
+            assertTrue("testMultiCameraRelease: First camera preview timed out on frame " + f + "!",
+                       mPreviewDone.block( WAIT_FOR_COMMAND_TO_COMPLETE));
+        }
+        if (LOGV) Log.v(TAG, "testMultiCameraRelease: Stopping preview on camera 0");
+        mCamera.stopPreview();
+        // Save message looper and camera to deterministically release them, instead
+        // of letting GC do it at some point.
+        Camera firstCamera = mCamera;
+        Looper firstLooper = mLooper;
+        //terminateMessageLooper(); // Intentionally not calling this
+
+        // Start second camera without releasing the first one (will
+        // set mCamera and mLooper to new objects)
+        if (LOGV) Log.v(TAG, "testMultiCameraRelease: Opening camera 1");
+        initializeMessageLooper(1);
+        SimplePreviewStreamCb callback1 = new SimplePreviewStreamCb(1);
+        mCamera.setPreviewCallback(callback1);
+        if (LOGV) Log.v(TAG, "testMultiCameraRelease: Starting preview on camera 1");
+        mCamera.startPreview();
+        // Run preview for a bit - GC of first camera instance should not impact the second's
+        // operation.
+        for (int f = 0; f < 100; f++) {
+            mPreviewDone.close();
+            assertTrue("testMultiCameraRelease: Second camera preview timed out on frame " + f + "!",
+                       mPreviewDone.block( WAIT_FOR_COMMAND_TO_COMPLETE));
+            if (f == 50) {
+                // Release first camera mid-preview, should cause no problems
+                if (LOGV) Log.v(TAG, "testMultiCameraRelease: Releasing camera 0");
+                firstCamera.release();
+            }
+        }
+        if (LOGV) Log.v(TAG, "testMultiCameraRelease: Stopping preview on camera 0");
+        mCamera.stopPreview();
+
+        firstLooper.quit();
+        terminateMessageLooper();
+    }
+
+    // This callback just signals on the condition variable, making it useful for checking that
+    // preview callbacks don't stop unexpectedly
+    private final class SimplePreviewStreamCb
+            implements android.hardware.Camera.PreviewCallback {
+        private int mId;
+        public SimplePreviewStreamCb(int id) {
+            mId = id;
+        }
+        public void onPreviewFrame(byte[] data, android.hardware.Camera camera) {
+            if (LOGV) Log.v(TAG, "Preview frame callback, id " + mId + ".");
+            mPreviewDone.open();
+        }
+    }
+
+    @UiThreadTest
+    public void testFocusAreas() throws Exception {
+        int nCameras = Camera.getNumberOfCameras();
+        for (int id = 0; id < nCameras; id++) {
+            Log.v(TAG, "Camera id=" + id);
+
+            initializeMessageLooper(id);
+            Parameters parameters = mCamera.getParameters();
+            int maxNumFocusAreas = parameters.getMaxNumFocusAreas();
+            assertTrue(maxNumFocusAreas >= 0);
+            if (maxNumFocusAreas > 0) {
+                List<String> focusModes = parameters.getSupportedFocusModes();
+                assertTrue(focusModes.contains(Parameters.FOCUS_MODE_AUTO));
+                testAreas(FOCUS_AREA, maxNumFocusAreas);
+            }
+            terminateMessageLooper();
+        }
+    }
+
+    @UiThreadTest
+    public void testMeteringAreas() throws Exception {
+        int nCameras = Camera.getNumberOfCameras();
+        for (int id = 0; id < nCameras; id++) {
+            Log.v(TAG, "Camera id=" + id);
+            initializeMessageLooper(id);
+            Parameters parameters = mCamera.getParameters();
+            int maxNumMeteringAreas = parameters.getMaxNumMeteringAreas();
+            assertTrue(maxNumMeteringAreas >= 0);
+            if (maxNumMeteringAreas > 0) {
+                testAreas(METERING_AREA, maxNumMeteringAreas);
+            }
+            terminateMessageLooper();
+        }
+    }
+
+    private void testAreas(int type, int maxNumAreas) throws Exception {
+        mCamera.startPreview();
+
+        // Test various valid cases.
+        testValidAreas(type, null);                                  // the default area
+        testValidAreas(type, makeAreas(-1000, -1000, 1000, 1000, 1)); // biggest area
+        testValidAreas(type, makeAreas(-500, -500, 500, 500, 1000)); // medium area & biggest weight
+        testValidAreas(type, makeAreas(0, 0, 1, 1, 1));              // smallest area
+
+        ArrayList<Area> areas = new ArrayList();
+        if (maxNumAreas > 1) {
+            // Test overlapped areas.
+            testValidAreas(type, makeAreas(-250, -250, 250, 250, 1, 0, 0, 500, 500, 2));
+            // Test completely disjoint areas.
+            testValidAreas(type, makeAreas(-250, -250, 0, 0, 1, 900, 900, 1000, 1000, 1));
+            // Test the maximum number of areas.
+            testValidAreas(type, makeAreas(-1000, -1000, 1000, 1000, 1000, maxNumAreas));
+        }
+
+        // Test various invalid cases.
+        testInvalidAreas(type, makeAreas(-1001, -1000, 1000, 1000, 1));    // left should >= -1000
+        testInvalidAreas(type, makeAreas(-1000, -1001, 1000, 1000, 1));    // top should >= -1000
+        testInvalidAreas(type, makeAreas(-1000, -1000, 1001, 1000, 1));    // right should <= 1000
+        testInvalidAreas(type, makeAreas(-1000, -1000, 1000, 1001, 1));    // bottom should <= 1000
+        testInvalidAreas(type, makeAreas(-1000, -1000, 1000, 1000, 0));    // weight should >= 1
+        testInvalidAreas(type, makeAreas(-1000, -1000, 1000, 1001, 1001)); // weight should <= 1000
+        testInvalidAreas(type, makeAreas(500, -1000, 500, 1000, 1));       // left should < right
+        testInvalidAreas(type, makeAreas(-1000, 500, 1000, 500, 1));       // top should < bottom
+        testInvalidAreas(type, makeAreas(500, -1000, 499, 1000, 1));       // left should < right
+        testInvalidAreas(type, makeAreas(-1000, 500, 100, 499, 1));        // top should < bottom
+        testInvalidAreas(type, makeAreas(-250, -250, 250, 250, -1));       // weight should >= 1
+        // Test when the number of areas exceeds maximum.
+        testInvalidAreas(type, makeAreas(-1000, -1000, 1000, 1000, 1000, maxNumAreas + 1));
+    }
+
+    private static ArrayList<Area> makeAreas(int left, int top, int right, int bottom, int weight) {
+        ArrayList<Area> areas = new ArrayList<Area>();
+        areas.add(new Area(new Rect(left, top, right, bottom), weight));
+        return areas;
+    }
+
+    private static ArrayList<Area> makeAreas(int left, int top, int right, int bottom,
+            int weight, int number) {
+        ArrayList<Area> areas = new ArrayList<Area>();
+        for (int i = 0; i < number; i++) {
+            areas.add(new Area(new Rect(left, top, right, bottom), weight));
+        }
+        return areas;
+    }
+
+    private static ArrayList<Area> makeAreas(int left1, int top1, int right1,
+            int bottom1, int weight1, int left2, int top2, int right2,
+            int bottom2, int weight2) {
+        ArrayList<Area> areas = new ArrayList<Area>();
+        areas.add(new Area(new Rect(left1, top1, right1, bottom1), weight1));
+        areas.add(new Area(new Rect(left2, top2, right2, bottom2), weight2));
+        return areas;
+    }
+
+    private void testValidAreas(int areaType, ArrayList<Area> areas) {
+        if (areaType == FOCUS_AREA) {
+            testValidFocusAreas(areas);
+        } else {
+            testValidMeteringAreas(areas);
+        }
+    }
+
+    private void testInvalidAreas(int areaType, ArrayList<Area> areas) {
+        if (areaType == FOCUS_AREA) {
+            testInvalidFocusAreas(areas);
+        } else {
+            testInvalidMeteringAreas(areas);
+        }
+    }
+
+    private void testValidFocusAreas(ArrayList<Area> areas) {
+        Parameters parameters = mCamera.getParameters();
+        parameters.setFocusAreas(areas);
+        mCamera.setParameters(parameters);
+        parameters = mCamera.getParameters();
+        assertEquals(areas, parameters.getFocusAreas());
+        mCamera.autoFocus(mAutoFocusCallback);
+        waitForFocusDone();
+    }
+
+    private void testInvalidFocusAreas(ArrayList<Area> areas) {
+        Parameters parameters = mCamera.getParameters();
+        List<Area> originalAreas = parameters.getFocusAreas();
+        try {
+            parameters.setFocusAreas(areas);
+            mCamera.setParameters(parameters);
+            fail("Should throw exception when focus area is invalid.");
+        } catch (RuntimeException e) {
+            parameters = mCamera.getParameters();
+            assertEquals(originalAreas, parameters.getFocusAreas());
+        }
+    }
+
+    private void testValidMeteringAreas(ArrayList<Area> areas) {
+        Parameters parameters = mCamera.getParameters();
+        parameters.setMeteringAreas(areas);
+        mCamera.setParameters(parameters);
+        parameters = mCamera.getParameters();
+        assertEquals(areas, parameters.getMeteringAreas());
+    }
+
+    private void testInvalidMeteringAreas(ArrayList<Area> areas) {
+        Parameters parameters = mCamera.getParameters();
+        List<Area> originalAreas = parameters.getMeteringAreas();
+        try {
+            parameters.setMeteringAreas(areas);
+            mCamera.setParameters(parameters);
+            fail("Should throw exception when metering area is invalid.");
+        } catch (RuntimeException e) {
+            parameters = mCamera.getParameters();
+            assertEquals(originalAreas, parameters.getMeteringAreas());
+        }
+    }
+
+    // Apps should be able to call startPreview in jpeg callback.
+    @UiThreadTest
+    public void testJpegCallbackStartPreview() throws Exception {
+        int nCameras = Camera.getNumberOfCameras();
+        for (int id = 0; id < nCameras; id++) {
+            Log.v(TAG, "Camera id=" + id);
+            testJpegCallbackStartPreviewByCamera(id);
+        }
+    }
+
+    private void testJpegCallbackStartPreviewByCamera(int cameraId) throws Exception {
+        initializeMessageLooper(cameraId);
+        mCamera.startPreview();
+        mCamera.takePicture(mShutterCallback, mRawPictureCallback, new JpegStartPreviewCallback());
+        waitForSnapshotDone();
+        terminateMessageLooper();
+        assertTrue(mJpegPictureCallbackResult);
+    }
+
+    private final class JpegStartPreviewCallback implements PictureCallback {
+        public void onPictureTaken(byte[] rawData, Camera camera) {
+            try {
+                camera.startPreview();
+                mJpegPictureCallbackResult = true;
+            } catch (Exception e) {
+            }
+            mSnapshotDone.open();
+        }
+    }
+
+    @UiThreadTest
+    public void testRecordingHint() throws Exception {
+        int nCameras = Camera.getNumberOfCameras();
+        for (int id = 0; id < nCameras; id++) {
+            Log.v(TAG, "Camera id=" + id);
+            testRecordingHintByCamera(id);
+        }
+    }
+
+    private void testRecordingHintByCamera(int cameraId) throws Exception {
+        initializeMessageLooper(cameraId);
+        Parameters parameters = mCamera.getParameters();
+
+        SurfaceHolder holder = getActivity().getSurfaceView().getHolder();
+        CamcorderProfile profile = CamcorderProfile.get(cameraId,
+                CamcorderProfile.QUALITY_LOW);
+
+        setPreviewSizeByProfile(parameters, profile);
+
+        // Test recording videos and taking pictures when the hint is off and on.
+        for (int i = 0; i < 2; i++) {
+            parameters.setRecordingHint(i == 0 ? false : true);
+            mCamera.setParameters(parameters);
+            mCamera.startPreview();
+            recordVideoSimple(profile, holder);
+            mCamera.takePicture(mShutterCallback, mRawPictureCallback, mJpegPictureCallback);
+            waitForSnapshotDone();
+            assertTrue(mJpegPictureCallbackResult);
+        }
+
+        // Can change recording hint when the preview is active.
+        mCamera.startPreview();
+        parameters.setRecordingHint(false);
+        mCamera.setParameters(parameters);
+        parameters.setRecordingHint(true);
+        mCamera.setParameters(parameters);
+        terminateMessageLooper();
+    }
+
+    private void recordVideoSimple(CamcorderProfile profile,
+            SurfaceHolder holder) throws Exception {
+        mCamera.unlock();
+        MediaRecorder recorder = new MediaRecorder();
+        try {
+            recorder.setCamera(mCamera);
+            recorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
+            recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
+            recorder.setProfile(profile);
+            recorder.setOutputFile("/dev/null");
+            recorder.setPreviewDisplay(holder.getSurface());
+            recorder.prepare();
+            recorder.start();
+            Thread.sleep(2000);
+            recorder.stop();
+        } finally {
+            recorder.release();
+            mCamera.lock();
+        }
+    }
 }
diff --git a/tests/tests/jni/libjnitest/Android.mk b/tests/tests/jni/libjnitest/Android.mk
index 84856b3..d7d1bad 100644
--- a/tests/tests/jni/libjnitest/Android.mk
+++ b/tests/tests/jni/libjnitest/Android.mk
@@ -25,9 +25,6 @@
 # Don't include this package in any configuration by default.
 LOCAL_MODULE_TAGS := optional
 
-# This isn't part of the system, so don't prelink it.
-LOCAL_PRELINK_MODULE := false
-
 LOCAL_SRC_FILES := \
 	android_jni_cts_InstanceNonce.c \
 	android_jni_cts_JniCTest.c \
diff --git a/tests/tests/location/src/android/location/cts/LocationManagerTest.java b/tests/tests/location/src/android/location/cts/LocationManagerTest.java
index 51623d0..620ee82 100755
--- a/tests/tests/location/src/android/location/cts/LocationManagerTest.java
+++ b/tests/tests/location/src/android/location/cts/LocationManagerTest.java
@@ -576,9 +576,6 @@
 
         mManager.addProximityAlert(0, 0, 0, 5000, pi);
         mManager.removeProximityAlert(pi);
-
-        mManager.addProximityAlert(0, 0, 0, 5000, null);
-        mManager.removeProximityAlert(null);
     }
 
     @TestTargets({
diff --git a/tests/tests/media/src/android/media/cts/AudioEffectTest.java b/tests/tests/media/src/android/media/cts/AudioEffectTest.java
index 0aaf11f..c40f169 100644
--- a/tests/tests/media/src/android/media/cts/AudioEffectTest.java
+++ b/tests/tests/media/src/android/media/cts/AudioEffectTest.java
@@ -22,11 +22,13 @@
 import android.media.audiofx.AudioEffect;
 import android.media.AudioFormat;
 import android.media.AudioManager;
+import android.media.AudioRecord;
 import android.media.AudioTrack;
 import android.media.audiofx.PresetReverb;
 import android.media.audiofx.EnvironmentalReverb;
 import android.media.audiofx.Equalizer;
 import android.media.MediaPlayer;
+import android.media.MediaRecorder;
 
 import android.os.Looper;
 import android.test.AndroidTestCase;
@@ -46,6 +48,8 @@
     private final static float DELAY_TOLERANCE = 1.05f;
     // allow +/- 5% tolerance between set and get ratios
     private final static float RATIO_TOLERANCE = 1.05f;
+    // AudioRecord sampling rate
+    private final static int SAMPLING_RATE = 44100;
 
     private AudioEffect mEffect = null;
     private AudioEffect mEffect2 = null;
@@ -115,6 +119,25 @@
     // 1 - constructor
     //----------------------------------
 
+    private AudioRecord getAudioRecord() {
+        AudioRecord ar = null;
+        try {
+            ar = new AudioRecord(MediaRecorder.AudioSource.DEFAULT,
+                    SAMPLING_RATE,
+                    AudioFormat.CHANNEL_CONFIGURATION_MONO,
+                    AudioFormat.ENCODING_PCM_16BIT,
+                    AudioRecord.getMinBufferSize(SAMPLING_RATE,
+                            AudioFormat.CHANNEL_CONFIGURATION_MONO,
+                            AudioFormat.ENCODING_PCM_16BIT) * 10);
+            assertNotNull("Could not create AudioRecord", ar);
+            assertEquals("AudioRecord not initialized",
+                    AudioRecord.STATE_INITIALIZED, ar.getState());
+        } catch (IllegalArgumentException e) {
+            fail("AudioRecord invalid parameter");
+        }
+        return ar;
+    }
+
     //Test case 1.0: test constructor from effect type and get effect ID
     @TestTargets({
         @TestTargetNew(
@@ -139,10 +162,19 @@
         for (int i = 0; i < desc.length; i++) {
             if (!desc[i].type.equals(AudioEffect.EFFECT_TYPE_NULL)) {
                 try {
+                    int sessionId;
+                    AudioRecord ar = null;
+                    if (AudioEffect.EFFECT_PRE_PROCESSING.equals(desc[i].connectMode)) {
+                        ar = getAudioRecord();
+                        sessionId = ar.getAudioSessionId();
+                    } else {
+                        sessionId = 0;
+                    }
                     AudioEffect effect = new AudioEffect(desc[i].type,
                             AudioEffect.EFFECT_TYPE_NULL,
                             0,
-                            0);
+                            sessionId);
+
                     assertNotNull("could not create AudioEffect", effect);
                     try {
                         assertTrue("invalid effect ID", (effect.getId() != 0));
@@ -150,6 +182,9 @@
                         fail("AudioEffect not initialized");
                     } finally {
                         effect.release();
+                        if (ar != null) {
+                            ar.release();
+                        }
                     }
                 } catch (IllegalArgumentException e) {
                     fail("Effect not found: "+desc[i].name);
@@ -183,10 +218,18 @@
         assertTrue("no effects found", (desc.length != 0));
         for (int i = 0; i < desc.length; i++) {
             try {
+                int sessionId;
+                AudioRecord ar = null;
+                if (AudioEffect.EFFECT_PRE_PROCESSING.equals(desc[i].connectMode)) {
+                    ar =  getAudioRecord();
+                    sessionId = ar.getAudioSessionId();
+                } else {
+                    sessionId = 0;
+                }
                 AudioEffect effect = new AudioEffect(AudioEffect.EFFECT_TYPE_NULL,
                         desc[i].uuid,
                         0,
-                        0);
+                        sessionId);
                 assertNotNull("could not create AudioEffect", effect);
                 try {
                     assertTrue("invalid effect ID", (effect.getId() != 0));
@@ -194,6 +237,9 @@
                     fail("AudioEffect not initialized");
                 } finally {
                     effect.release();
+                    if (ar != null) {
+                        ar.release();
+                    }
                 }
             } catch (IllegalArgumentException e) {
                 fail("Effect not found: "+desc[i].name);
@@ -566,7 +612,7 @@
             byte[] param = mEffect.intToByteArray(PresetReverb.PARAM_PRESET);
             byte[] value = new byte[2];
             int status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 1 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 1 failed", AudioEffect.isError(status));
             short preset = PresetReverb.PRESET_SMALLROOM;
             if (mEffect.byteArrayToShort(value) == preset) {
                 preset = PresetReverb.PRESET_MEDIUMROOM;
@@ -575,7 +621,7 @@
             status = mEffect.setParameter(param, value);
             assertEquals("setParameter failed", AudioEffect.SUCCESS, status);
             status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 2 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 2 failed", AudioEffect.isError(status));
             assertEquals("get/set Parameter failed", preset,
                     mEffect.byteArrayToShort(value));
 
@@ -609,7 +655,7 @@
             int param = EnvironmentalReverb.PARAM_DECAY_TIME;
             int[] value = new int[1];
             int status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 1 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 1 failed", AudioEffect.isError(status));
             int time = 500;
             if (value[0] == time) {
                 time = 1000;
@@ -617,7 +663,7 @@
             status = mEffect.setParameter(param, time);
             assertEquals("setParameter failed", AudioEffect.SUCCESS, status);
             status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 2 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 2 failed", AudioEffect.isError(status));
             assertTrue("got incorrect decay time",
                     ((float)value[0] > (float)(time / DELAY_TOLERANCE)) &&
                     ((float)value[0] < (float)(time * DELAY_TOLERANCE)));
@@ -652,7 +698,7 @@
             int param = PresetReverb.PARAM_PRESET;
             short[] value = new short[1];
             int status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 1 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 1 failed", AudioEffect.isError(status));
             short preset = PresetReverb.PRESET_SMALLROOM;
             if (value[0] == preset) {
                 preset = PresetReverb.PRESET_MEDIUMROOM;
@@ -660,7 +706,7 @@
             status = mEffect.setParameter(param, preset);
             assertEquals("setParameter failed", AudioEffect.SUCCESS, status);
             status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 2 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 2 failed", AudioEffect.isError(status));
             assertEquals("get/set Parameter failed", preset, value[0]);
 
         } catch (IllegalArgumentException e) {
@@ -693,7 +739,7 @@
             int param = EnvironmentalReverb.PARAM_DECAY_TIME;
             byte[] value = new byte[4];
             int status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 1 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 1 failed", AudioEffect.isError(status));
             int time = 500;
             if (mEffect.byteArrayToInt(value) == time) {
                 time = 1000;
@@ -702,7 +748,7 @@
             status = mEffect.setParameter(param, value);
             assertEquals("setParameter failed", AudioEffect.SUCCESS, status);
             status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 2 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 2 failed", AudioEffect.isError(status));
             int time2 = mEffect.byteArrayToInt(value);
             assertTrue("got incorrect decay time",
                     ((float)time2 > (float)(time / DELAY_TOLERANCE)) &&
@@ -739,7 +785,7 @@
             int[] value = new int[1];
             param[0] = EnvironmentalReverb.PARAM_DECAY_TIME;
             int status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 1 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 1 failed", AudioEffect.isError(status));
             int[] time = new int[1];
             time[0] = 500;
             if (value[0] == time[0]) {
@@ -748,7 +794,7 @@
             status = mEffect.setParameter(param, time);
             assertEquals("setParameter failed", AudioEffect.SUCCESS, status);
             status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 2 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 2 failed", AudioEffect.isError(status));
             assertTrue("got incorrect decay time",
                     ((float)value[0] > (float)(time[0] / DELAY_TOLERANCE)) &&
                     ((float)value[0] < (float)(time[0] * DELAY_TOLERANCE)));
@@ -785,7 +831,7 @@
             param[0] = PresetReverb.PARAM_PRESET;
             short[] value = new short[1];
             int status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 1 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 1 failed", AudioEffect.isError(status));
             short[] preset = new short[1];
             preset[0] = PresetReverb.PRESET_SMALLROOM;
             if (value[0] == preset[0]) {
@@ -794,7 +840,7 @@
             status = mEffect.setParameter(param, preset);
             assertEquals("setParameter failed", AudioEffect.SUCCESS, status);
             status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 2 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 2 failed", AudioEffect.isError(status));
             assertEquals("get/set Parameter failed", preset[0], value[0]);
 
         } catch (IllegalArgumentException e) {
@@ -828,7 +874,7 @@
             param[0] = EnvironmentalReverb.PARAM_DECAY_TIME;
             byte[] value = new byte[4];
             int status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 1 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 1 failed", AudioEffect.isError(status));
             int time = 500;
             if (mEffect.byteArrayToInt(value) == time) {
                 time = 1000;
@@ -837,7 +883,7 @@
             status = mEffect.setParameter(param, mEffect.intToByteArray(time));
             assertEquals("setParameter failed", AudioEffect.SUCCESS, status);
             status = mEffect.getParameter(param, value);
-            assertEquals("getParameter 2 failed", AudioEffect.SUCCESS, status);
+            assertFalse("getParameter 2 failed", AudioEffect.isError(status));
             int time2 = mEffect.byteArrayToInt(value);
             assertTrue("got incorrect decay time",
                     ((float)time2 > (float)(time / DELAY_TOLERANCE)) &&
@@ -1018,8 +1064,8 @@
 
             short[] value = new short[1];
             status = effect2.getParameter(PresetReverb.PARAM_PRESET, value);
-            assertEquals("Effect2 getParameter failed",
-                    AudioEffect.SUCCESS, status);
+            assertFalse("Effect2 getParameter failed",
+                    AudioEffect.isError(status));
             assertEquals("Effect1 changed parameter", PresetReverb.PRESET_SMALLROOM
                     , value[0]);
 
@@ -1186,7 +1232,7 @@
             byte[] reply = new byte[4];
             // command 3 is ENABLE
             int status = mEffect.command(3, cmd, reply);
-            assertEquals("command failed", AudioEffect.SUCCESS, status);
+            assertFalse("command failed", AudioEffect.isError(status));
             assertTrue("effect not enabled", mEffect.getEnabled());
 
         } catch (IllegalStateException e) {
diff --git a/tests/tests/media/src/android/media/cts/CamcorderProfileTest.java b/tests/tests/media/src/android/media/cts/CamcorderProfileTest.java
index 4b0728b..e2cbebb 100644
--- a/tests/tests/media/src/android/media/cts/CamcorderProfileTest.java
+++ b/tests/tests/media/src/android/media/cts/CamcorderProfileTest.java
@@ -21,7 +21,6 @@
 import dalvik.annotation.TestTargetNew;
 import dalvik.annotation.TestTargets;
 
-import android.content.pm.PackageManager;
 import android.hardware.Camera;
 import android.hardware.Camera.Parameters;
 import android.hardware.Camera.Size;
@@ -236,16 +235,6 @@
         )
     })
     public void testGet() {
-        /*
-         * Device may not have rear camera for checkGet(-1).
-         * Checking PackageManager.FEATURE_CAMERA is included or not to decide the flow.
-         * Continue if the feature is included.
-         * Otherwise, exit test.
-         */
-        PackageManager pm = mContext.getPackageManager();
-        if (!pm.hasSystemFeature(PackageManager.FEATURE_CAMERA)) {
-            return;
-        }
         checkGet(-1);
     }
 
diff --git a/tests/tests/media/src/android/media/cts/MediaPlayerTest.java b/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
index 470cf76..b50e6ae 100644
--- a/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
+++ b/tests/tests/media/src/android/media/cts/MediaPlayerTest.java
@@ -250,6 +250,39 @@
             Thread.sleep(SLEEP_TIME);
         }
 
+        // Test for reseting a surface during video playback
+        // After reseting, the video should continue playing
+        // from the time setDisplay() was called
+        mp.start();
+        Thread.sleep(SLEEP_TIME);
+
+        int posBefore = mp.getCurrentPosition();
+        mp.setDisplay(getActivity().getSurfaceHolder2());
+        int posAfter = mp.getCurrentPosition();
+
+        assertEquals(posAfter, posBefore);
+        assertTrue(mp.isPlaying());
+
+        Thread.sleep(SLEEP_TIME);
+
+        posBefore = mp.getCurrentPosition();
+        mp.setDisplay(null);
+        posAfter = mp.getCurrentPosition();
+
+        assertEquals(posAfter, posBefore);
+        assertTrue(mp.isPlaying());
+
+        Thread.sleep(SLEEP_TIME);
+
+        posBefore = mp.getCurrentPosition();
+        mp.setDisplay(getActivity().generateSurfaceHolder());
+        posAfter = mp.getCurrentPosition();
+
+        assertEquals(posAfter, posBefore);
+        assertTrue(mp.isPlaying());
+
+        Thread.sleep(SLEEP_TIME);
+
         mp.release();
     }
 
diff --git a/tests/tests/net/src/android/net/cts/NetworkInfo_DetailedStateTest.java b/tests/tests/net/src/android/net/cts/NetworkInfo_DetailedStateTest.java
index 196e102..6b9b985 100644
--- a/tests/tests/net/src/android/net/cts/NetworkInfo_DetailedStateTest.java
+++ b/tests/tests/net/src/android/net/cts/NetworkInfo_DetailedStateTest.java
@@ -16,12 +16,13 @@
 
 package android.net.cts;
 
-import android.net.NetworkInfo.DetailedState;
-import android.test.AndroidTestCase;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetClass;
 import dalvik.annotation.TestTargetNew;
 
+import android.net.NetworkInfo.DetailedState;
+import android.test.AndroidTestCase;
+
 @TestTargetClass(DetailedState.class)
 public class NetworkInfo_DetailedStateTest extends AndroidTestCase {
 
@@ -52,7 +53,7 @@
     )
     public void testValues() {
         DetailedState[] expected = DetailedState.values();
-        assertEquals(10, expected.length);
+        assertEquals(11, expected.length);
         assertEquals(DetailedState.IDLE, expected[0]);
         assertEquals(DetailedState.SCANNING, expected[1]);
         assertEquals(DetailedState.CONNECTING, expected[2]);
@@ -63,6 +64,7 @@
         assertEquals(DetailedState.DISCONNECTING, expected[7]);
         assertEquals(DetailedState.DISCONNECTED, expected[8]);
         assertEquals(DetailedState.FAILED, expected[9]);
+        assertEquals(DetailedState.BLOCKED, expected[10]);
     }
 
 }
diff --git a/tests/tests/os/Android.mk b/tests/tests/os/Android.mk
index affd97d..35cafb9 100644
--- a/tests/tests/os/Android.mk
+++ b/tests/tests/os/Android.mk
@@ -23,11 +23,7 @@
 
 LOCAL_JAVA_LIBRARIES := android.test.runner
 
-ifneq ($(TARGET_SIMULATOR),true)
 LOCAL_SRC_FILES := $(call all-java-files-under, src)
-else
-LOCAL_SRC_FILES := $(filter-out %BuildTest.java,$(call all-java-files-under, src))
-endif
 
 LOCAL_PACKAGE_NAME := CtsOsTestCases
 
diff --git a/tests/tests/os/src/android/os/cts/ParcelTest.java b/tests/tests/os/src/android/os/cts/ParcelTest.java
index 52b068f..2493680 100644
--- a/tests/tests/os/src/android/os/cts/ParcelTest.java
+++ b/tests/tests/os/src/android/os/cts/ParcelTest.java
@@ -563,9 +563,9 @@
         p.recycle();
 
         // test Parcelable[]
-        Signature[] signatures = {new Signature("123"),
-                new Signature("ABC"),
-                new Signature("abc")};
+        Signature[] signatures = {new Signature("1234"),
+                new Signature("ABCD"),
+                new Signature("abcd")};
         Parcelable[] signatures2;
         p = Parcel.obtain();
         p.writeValue(signatures);
@@ -2449,13 +2449,13 @@
     public void testReadParcelableArray() {
         Parcel p;
         MockClassLoader mcl = new MockClassLoader();
-        Signature[] s = {new Signature("123"),
-                new Signature("ABC"),
-                new Signature("abc")};
+        Signature[] s = {new Signature("1234"),
+                new Signature("ABCD"),
+                new Signature("abcd")};
 
-        Signature[] s2 = {new Signature("123"),
+        Signature[] s2 = {new Signature("1234"),
                 null,
-                new Signature("abc")};
+                new Signature("abcd")};
         Parcelable[] s3;
 
         // test write null
@@ -2498,13 +2498,13 @@
     })
     public void testReadTypedArray() {
         Parcel p;
-        Signature[] s = {new Signature("123"),
-                new Signature("ABC"),
-                new Signature("abc")};
+        Signature[] s = {new Signature("1234"),
+                new Signature("ABCD"),
+                new Signature("abcd")};
 
-        Signature[] s2 = {new Signature("123"),
+        Signature[] s2 = {new Signature("1234"),
                 null,
-                new Signature("abc")};
+                new Signature("abcd")};
         Signature[] s3 = new Signature[3];
         Signature[] s4 = new Signature[4];
 
@@ -2575,11 +2575,11 @@
     public void testReadTypedArray2() {
         Parcel p;
         Signature[] s = {
-                new Signature("123"), new Signature("ABC"), new Signature("abc")
+                new Signature("1234"), new Signature("ABCD"), new Signature("abcd")
         };
 
         Signature[] s2 = {
-                new Signature("123"), null, new Signature("abc")
+                new Signature("1234"), null, new Signature("abcd")
         };
         Signature[] s3 = {
                 null, null, null
@@ -2625,13 +2625,13 @@
     })
     public void testCreateTypedArray() {
         Parcel p;
-        Signature[] s = {new Signature("123"),
-                new Signature("ABC"),
-                new Signature("abc")};
+        Signature[] s = {new Signature("1234"),
+                new Signature("ABCD"),
+                new Signature("abcd")};
 
-        Signature[] s2 = {new Signature("123"),
+        Signature[] s2 = {new Signature("1234"),
                 null,
-                new Signature("abc")};
+                new Signature("abcd")};
         Signature[] s3;
 
         // test write null
@@ -2676,12 +2676,12 @@
     public void testReadTypedList() {
         Parcel p;
         ArrayList<Signature> s = new ArrayList<Signature>();
-        s.add(new Signature("123"));
-        s.add(new Signature("ABC"));
-        s.add(new Signature("abc"));
+        s.add(new Signature("1234"));
+        s.add(new Signature("ABCD"));
+        s.add(new Signature("abcd"));
 
         ArrayList<Signature> s2 = new ArrayList<Signature>();
-        s2.add(new Signature("123"));
+        s2.add(new Signature("1234"));
         s2.add(null);
 
         ArrayList<Signature> s3 = new ArrayList<Signature>();
@@ -2728,7 +2728,7 @@
         p.recycle();
 
         s2 = new ArrayList<Signature>();
-        s2.add(new Signature("123"));
+        s2.add(new Signature("1234"));
         s2.add(null);
         p = Parcel.obtain();
         p.writeTypedList(s2);
@@ -2756,12 +2756,12 @@
     public void testCreateTypedArrayList() {
         Parcel p;
         ArrayList<Signature> s = new ArrayList<Signature>();
-        s.add(new Signature("123"));
-        s.add(new Signature("ABC"));
-        s.add(new Signature("abc"));
+        s.add(new Signature("1234"));
+        s.add(new Signature("ABCD"));
+        s.add(new Signature("abcd"));
 
         ArrayList<Signature> s2 = new ArrayList<Signature>();
-        s2.add(new Signature("123"));
+        s2.add(new Signature("1234"));
         s2.add(null);
 
         ArrayList<Signature> s3;
diff --git a/tests/tests/os/src/android/os/cts/ProcessTest.java b/tests/tests/os/src/android/os/cts/ProcessTest.java
index 6216f06..4f61688 100644
--- a/tests/tests/os/src/android/os/cts/ProcessTest.java
+++ b/tests/tests/os/src/android/os/cts/ProcessTest.java
@@ -26,7 +26,6 @@
 import android.test.AndroidTestCase;
 import android.util.Log;
 import dalvik.annotation.TestTargets;
-import dalvik.annotation.TestStatus;
 import dalvik.annotation.TestTargetNew;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetClass;
@@ -235,13 +234,7 @@
         }
 
         assertTrue(time > 0);
-
-        if(servicePid == Process.myPid()) {
-            assertFalse(Process.supportsProcesses());
-            return;
-        } else {
-            assertTrue(Process.supportsProcesses());
-        }
+        assertTrue(servicePid != Process.myPid());
 
         Process.killProcess(servicePid);
         synchronized (mSync) {
diff --git a/tests/tests/permission/jni/Android.mk b/tests/tests/permission/jni/Android.mk
index 0891a72..44e742e 100644
--- a/tests/tests/permission/jni/Android.mk
+++ b/tests/tests/permission/jni/Android.mk
@@ -21,9 +21,6 @@
 # Don't include this package in any configuration by default.
 LOCAL_MODULE_TAGS := optional
 
-# This isn't part of the system, so don't prelink it.
-LOCAL_PRELINK_MODULE := false
-
 LOCAL_SRC_FILES := \
 		CtsPermissionsJniOnLoad.cpp \
 		android_permission_cts_FileUtils.cpp
diff --git a/tests/tests/permission/jni/android_permission_cts_FileUtils.cpp b/tests/tests/permission/jni/android_permission_cts_FileUtils.cpp
index 1666d50..c658af6 100644
--- a/tests/tests/permission/jni/android_permission_cts_FileUtils.cpp
+++ b/tests/tests/permission/jni/android_permission_cts_FileUtils.cpp
@@ -21,7 +21,6 @@
 #include <grp.h>
 #include <pwd.h>
 
-static jclass gFileStatusClass;
 static jfieldID gFileStatusDevFieldID;
 static jfieldID gFileStatusInoFieldID;
 static jfieldID gFileStatusModeFieldID;
@@ -101,19 +100,19 @@
 {
     jclass clazz = env->FindClass("android/permission/cts/FileUtils");
 
-    gFileStatusClass = env->FindClass("android/permission/cts/FileUtils$FileStatus");
-    gFileStatusDevFieldID = env->GetFieldID(gFileStatusClass, "dev", "I");
-    gFileStatusInoFieldID = env->GetFieldID(gFileStatusClass, "ino", "I");
-    gFileStatusModeFieldID = env->GetFieldID(gFileStatusClass, "mode", "I");
-    gFileStatusNlinkFieldID = env->GetFieldID(gFileStatusClass, "nlink", "I");
-    gFileStatusUidFieldID = env->GetFieldID(gFileStatusClass, "uid", "I");
-    gFileStatusGidFieldID = env->GetFieldID(gFileStatusClass, "gid", "I");
-    gFileStatusSizeFieldID = env->GetFieldID(gFileStatusClass, "size", "J");
-    gFileStatusBlksizeFieldID = env->GetFieldID(gFileStatusClass, "blksize", "I");
-    gFileStatusBlocksFieldID = env->GetFieldID(gFileStatusClass, "blocks", "J");
-    gFileStatusAtimeFieldID = env->GetFieldID(gFileStatusClass, "atime", "J");
-    gFileStatusMtimeFieldID = env->GetFieldID(gFileStatusClass, "mtime", "J");
-    gFileStatusCtimeFieldID = env->GetFieldID(gFileStatusClass, "ctime", "J");
+    jclass fileStatusClass = env->FindClass("android/permission/cts/FileUtils$FileStatus");
+    gFileStatusDevFieldID = env->GetFieldID(fileStatusClass, "dev", "I");
+    gFileStatusInoFieldID = env->GetFieldID(fileStatusClass, "ino", "I");
+    gFileStatusModeFieldID = env->GetFieldID(fileStatusClass, "mode", "I");
+    gFileStatusNlinkFieldID = env->GetFieldID(fileStatusClass, "nlink", "I");
+    gFileStatusUidFieldID = env->GetFieldID(fileStatusClass, "uid", "I");
+    gFileStatusGidFieldID = env->GetFieldID(fileStatusClass, "gid", "I");
+    gFileStatusSizeFieldID = env->GetFieldID(fileStatusClass, "size", "J");
+    gFileStatusBlksizeFieldID = env->GetFieldID(fileStatusClass, "blksize", "I");
+    gFileStatusBlocksFieldID = env->GetFieldID(fileStatusClass, "blocks", "J");
+    gFileStatusAtimeFieldID = env->GetFieldID(fileStatusClass, "atime", "J");
+    gFileStatusMtimeFieldID = env->GetFieldID(fileStatusClass, "mtime", "J");
+    gFileStatusCtimeFieldID = env->GetFieldID(fileStatusClass, "ctime", "J");
 
     return env->RegisterNatives(clazz, gMethods, 
             sizeof(gMethods) / sizeof(JNINativeMethod)); 
diff --git a/tests/tests/permission/src/android/permission/cts/DebuggableTest.java b/tests/tests/permission/src/android/permission/cts/DebuggableTest.java
index fe4ed57..d77e13e 100644
--- a/tests/tests/permission/src/android/permission/cts/DebuggableTest.java
+++ b/tests/tests/permission/src/android/permission/cts/DebuggableTest.java
@@ -20,7 +20,9 @@
 import android.content.pm.PackageManager;
 import android.test.AndroidTestCase;
 
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 
 /**
  * Verify that pre-installed packages don't have the debuggable
@@ -30,13 +32,16 @@
 public class DebuggableTest extends AndroidTestCase {
 
     public void testNoDebuggable() {
+        Set<String> debuggableApps = new HashSet<String>();
         List<ApplicationInfo> apps = getContext()
                 .getPackageManager()
                 .getInstalledApplications(PackageManager.GET_UNINSTALLED_PACKAGES);
         for (ApplicationInfo app : apps) {
             String appName = app.packageName;
-            assertTrue("Package " + appName + " is marked as debuggable.",
-                    (app.flags & ApplicationInfo.FLAG_DEBUGGABLE) == 0);
+            if ((app.flags & ApplicationInfo.FLAG_DEBUGGABLE) == ApplicationInfo.FLAG_DEBUGGABLE) {
+                debuggableApps.add(appName);
+            }
         }
+        assertTrue("Packages marked debuggable: " + debuggableApps, debuggableApps.isEmpty());
     }
 }
diff --git a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
index 3cbb362..ea6b4d1 100644
--- a/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
+++ b/tests/tests/permission/src/android/permission/cts/FileSystemPermissionTest.java
@@ -21,6 +21,7 @@
 import android.os.Environment;
 import android.test.AndroidTestCase;
 import android.test.suitebuilder.annotation.MediumTest;
+import android.test.suitebuilder.annotation.LargeTest;
 
 import java.io.File;
 import java.io.FileFilter;
@@ -36,9 +37,9 @@
  *
  * TODO: Combine this file with {@link android.os.cts.FileAccessPermissionTest}
  */
-@MediumTest
 public class FileSystemPermissionTest extends AndroidTestCase {
 
+    @MediumTest
     public void testCreateFileHasSanePermissions() throws Exception {
         File myFile = new File(getContext().getFilesDir(), "hello");
         FileOutputStream stream = new FileOutputStream(myFile);
@@ -59,6 +60,7 @@
         }
     }
 
+    @MediumTest
     public void testCreateDirectoryHasSanePermissions() throws Exception {
         File myDir = new File(getContext().getFilesDir(), "helloDirectory");
         assertTrue(myDir.mkdir());
@@ -79,6 +81,7 @@
         }
     }
 
+    @MediumTest
     public void testOtherApplicationDirectoriesAreNotWritable() throws Exception {
         List<ApplicationInfo> apps = getContext()
                 .getPackageManager()
@@ -91,36 +94,44 @@
         }
     }
 
+    @MediumTest
     public void testApplicationParentDirectoryNotWritable() throws Exception {
         String myDataDir = getContext().getApplicationInfo().dataDir;
         File parentDir = new File(myDataDir).getParentFile();
         assertDirectoryNotWritable(parentDir);
     }
 
+    @MediumTest
     public void testDataDirectoryNotWritable() throws Exception {
         assertDirectoryNotWritable(Environment.getDataDirectory());
     }
 
+    @MediumTest
     public void testAndroidRootDirectoryNotWritable() throws Exception {
         assertDirectoryNotWritable(Environment.getRootDirectory());
     }
 
+    @MediumTest
     public void testDownloadCacheDirectoryNotWritable() throws Exception {
         assertDirectoryNotWritable(Environment.getDownloadCacheDirectory());
     }
 
+    @MediumTest
     public void testRootDirectoryNotWritable() throws Exception {
         assertDirectoryNotWritable(new File("/"));
     }
 
+    @MediumTest
     public void testDevDirectoryNotWritable() throws Exception {
         assertDirectoryNotWritable(new File("/dev"));
     }
 
+    @MediumTest
     public void testProcDirectoryNotWritable() throws Exception {
         assertDirectoryNotWritable(new File("/proc"));
     }
 
+    @MediumTest
     public void testDevMemSane() throws Exception {
         File f = new File("/dev/mem");
         assertFalse(f.canRead());
@@ -128,6 +139,7 @@
         assertFalse(f.canExecute());
     }
 
+    @MediumTest
     public void testDevkmemSane() throws Exception {
         File f = new File("/dev/kmem");
         assertFalse(f.canRead());
@@ -135,6 +147,7 @@
         assertFalse(f.canExecute());
     }
 
+    @MediumTest
     public void testDevPortSane() throws Exception {
         File f = new File("/dev/port");
         assertFalse(f.canRead());
@@ -163,6 +176,7 @@
      * test only.  Writable directories within unreadable subdirectories
      * will NOT be detected by this code.
      */
+    @LargeTest
     public void testAllOtherDirectoriesNotWritable() throws Exception {
         File start = new File("/");
         assertDirectoryAndSubdirectoriesNotWritable(start);
@@ -193,6 +207,7 @@
      * poke around in there looking for bad directories.  There has to be
      * a better way...
      */
+    @LargeTest
     public void testOtherRandomDirectoriesNotWritable() throws Exception {
         for (String dir : OTHER_RANDOM_DIRECTORIES) {
             File start = new File(dir);
@@ -200,6 +215,7 @@
         }
     }
 
+    @LargeTest
     public void testAllFilesInSysAreNotWritable() throws Exception {
         assertAllFilesInDirAndSubDirAreNotWritable(new File("/sys"));
     }
diff --git a/tests/tests/provider/src/android/provider/cts/CalendarTest.java b/tests/tests/provider/src/android/provider/cts/CalendarTest.java
new file mode 100644
index 0000000..c931917
--- /dev/null
+++ b/tests/tests/provider/src/android/provider/cts/CalendarTest.java
@@ -0,0 +1,1656 @@
+/*
+ * Copyright (C) 2011 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 android.provider.cts;
+
+import dalvik.annotation.TestTargetClass;
+
+import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.CalendarContract;
+import android.provider.CalendarContract.Attendees;
+import android.provider.CalendarContract.Calendars;
+import android.provider.CalendarContract.Events;
+import android.provider.CalendarContract.Instances;
+import android.provider.CalendarContract.Reminders;
+import android.test.InstrumentationTestCase;
+import android.test.suitebuilder.annotation.*;
+import android.text.format.DateUtils;
+import android.text.format.Time;
+import android.util.Log;
+
+@TestTargetClass(android.provider.CalendarContract.class)
+public class CalendarTest extends InstrumentationTestCase {
+
+    private static final String TAG = "CalCTS";
+    private static final String CTS_TEST_TYPE = "LOCAL";
+    // @formatter:off
+    private static final String[] TIME_ZONES = new String[] {
+            "UTC",
+            "America/Los_Angeles",
+            "Asia/Beirut",
+            "Pacific/Auckland", };
+    // @formatter:on
+
+    private static final String SQL_WHERE_ID = Events._ID + "=?";
+    private static final String SQL_WHERE_CALENDAR_ID = Events.CALENDAR_ID + "=?";
+
+    private ContentResolver mContentResolver;
+
+    /** If set, log verbose instance info when running recurrence tests. */
+    private static final boolean DEBUG_RECURRENCE = false;
+
+    private static class CalendarHelper {
+
+        // @formatter:off
+        public static final String[] CALENDARS_SYNC_PROJECTION = new String[] {
+                Calendars._ID,
+                Calendars.ACCOUNT_NAME,
+                Calendars.ACCOUNT_TYPE,
+                Calendars._SYNC_ID,
+                Calendars.CAL_SYNC7,
+                Calendars.CAL_SYNC8,
+                Calendars.DIRTY,
+                Calendars.NAME,
+                Calendars.CALENDAR_DISPLAY_NAME,
+                Calendars.CALENDAR_COLOR,
+                Calendars.CALENDAR_ACCESS_LEVEL,
+                Calendars.VISIBLE,
+                Calendars.SYNC_EVENTS,
+                Calendars.CALENDAR_LOCATION,
+                Calendars.CALENDAR_TIME_ZONE,
+                Calendars.OWNER_ACCOUNT,
+                Calendars.CAN_ORGANIZER_RESPOND,
+                Calendars.CAN_MODIFY_TIME_ZONE,
+                Calendars.MAX_REMINDERS,
+                Calendars.DELETED,
+                Calendars.CAL_SYNC1,
+                Calendars.CAL_SYNC2,
+                Calendars.CAL_SYNC3,
+                Calendars.CAL_SYNC4,
+                Calendars.CAL_SYNC5,
+                Calendars.CAL_SYNC6,
+                };
+        // @formatter:on
+
+        private CalendarHelper() {}     // do not instantiate this class
+
+        static String generateCalendarOwnerEmail(String account) {
+            return "OWNER_" + account + "@example.com";
+        }
+
+        /**
+         * Creates a new set of values for creating a single calendar with every
+         * field.
+         *
+         * @param account The account name to create this calendar with
+         * @param seed A number used to generate the values
+         * @return A complete set of values for the calendar
+         */
+        public static ContentValues getNewCalendarValues(
+                String account, int seed) {
+            String seedString = Long.toString(seed);
+            ContentValues values = new ContentValues();
+            values.put(Calendars.ACCOUNT_TYPE, CTS_TEST_TYPE);
+
+            values.put(Calendars.ACCOUNT_NAME, account);
+            values.put(Calendars._SYNC_ID, "SYNC_ID:" + seedString);
+            values.put(Calendars.CAL_SYNC7, "SYNC_V:" + seedString);
+            values.put(Calendars.CAL_SYNC8, "SYNC_TIME:" + seedString);
+            values.put(Calendars.DIRTY, 0);
+            values.put(Calendars.OWNER_ACCOUNT, generateCalendarOwnerEmail(account));
+
+            values.put(Calendars.NAME, seedString);
+            values.put(Calendars.CALENDAR_DISPLAY_NAME, "DISPLAY_" + seedString);
+
+            values.put(Calendars.CALENDAR_ACCESS_LEVEL, (seed % 8) * 100);
+
+            values.put(Calendars.CALENDAR_COLOR, 0xff000000 + seed);
+            values.put(Calendars.VISIBLE, seed % 2);
+            values.put(Calendars.SYNC_EVENTS, 1);   // must be 1 for recurrence expansion
+            values.put(Calendars.CALENDAR_LOCATION, "LOCATION:" + seedString);
+            values.put(Calendars.CALENDAR_TIME_ZONE, TIME_ZONES[seed % TIME_ZONES.length]);
+            values.put(Calendars.CAN_ORGANIZER_RESPOND, seed % 2);
+            values.put(Calendars.CAN_MODIFY_TIME_ZONE, seed % 2);
+            values.put(Calendars.MAX_REMINDERS, seed);
+            values.put(Calendars.CAL_SYNC1, "SYNC1:" + seedString);
+            values.put(Calendars.CAL_SYNC2, "SYNC2:" + seedString);
+            values.put(Calendars.CAL_SYNC3, "SYNC3:" + seedString);
+            values.put(Calendars.CAL_SYNC4, "SYNC4:" + seedString);
+            values.put(Calendars.CAL_SYNC5, "SYNC5:" + seedString);
+            values.put(Calendars.CAL_SYNC6, "SYNC6:" + seedString);
+
+            return values;
+        }
+
+        /**
+         * Creates a set of values with just the updates and modifies the
+         * original values to the expected values
+         */
+        public static ContentValues getUpdateCalendarValuesWithOriginal(
+                ContentValues original, int seed) {
+            ContentValues values = new ContentValues();
+            String seedString = Long.toString(seed);
+
+            values.put(Calendars.CALENDAR_DISPLAY_NAME, "DISPLAY_" + seedString);
+            values.put(Calendars.CALENDAR_COLOR, 0xff000000 + seed);
+            values.put(Calendars.VISIBLE, seed % 2);
+            values.put(Calendars.SYNC_EVENTS, seed % 2);
+
+            original.putAll(values);
+            original.put(Calendars.DIRTY, 1);
+
+            return values;
+        }
+
+        public static int deleteCalendarById(ContentResolver resolver, long id) {
+            return resolver.delete(Calendars.CONTENT_URI, Calendars._ID + "=?",
+                    new String[] { Long.toString(id) });
+        }
+
+        public static int deleteCalendarByAccount(ContentResolver resolver, String account) {
+            return resolver.delete(Calendars.CONTENT_URI, Calendars.ACCOUNT_NAME + "=?",
+                    new String[] { account });
+        }
+
+        public static Cursor getCalendarsByAccount(ContentResolver resolver, String account) {
+            String selection = Calendars.ACCOUNT_TYPE + "=?";
+            String[] selectionArgs;
+            if (account != null) {
+                selection += " AND " + Calendars.ACCOUNT_NAME + "=?";
+                selectionArgs = new String[2];
+                selectionArgs[1] = account;
+            } else {
+                selectionArgs = new String[1];
+            }
+            selectionArgs[0] = CTS_TEST_TYPE;
+
+            return resolver.query(Calendars.CONTENT_URI, CALENDARS_SYNC_PROJECTION, selection,
+                    selectionArgs, null);
+        }
+    }
+
+    // @formatter:off
+    private static class EventHelper {
+        public static final String[] EVENTS_PROJECTION = new String[] {
+            Events._ID,
+            Events.ACCOUNT_NAME,
+            Events.ACCOUNT_TYPE,
+            Events.OWNER_ACCOUNT,
+            // Events.ORGANIZER_CAN_RESPOND, from Calendars
+            // Events.CAN_CHANGE_TZ, from Calendars
+            // Events.MAX_REMINDERS, from Calendars
+            Events.CALENDAR_ID,
+            // Events.CALENDAR_DISPLAY_NAME, from Calendars
+            // Events.CALENDAR_COLOR, from Calendars
+            // Events.CALENDAR_ACL, from Calendars
+            // Events.CALENDAR_VISIBLE, from Calendars
+            Events.SYNC_DATA3,
+            Events.SYNC_DATA6,
+            Events.TITLE,
+            Events.EVENT_LOCATION,
+            Events.DESCRIPTION,
+            Events.STATUS,
+            Events.SELF_ATTENDEE_STATUS,
+            Events.DTSTART,
+            Events.DTEND,
+            Events.EVENT_TIMEZONE,
+            Events.EVENT_END_TIMEZONE,
+            Events.DURATION,
+            Events.ALL_DAY,
+            Events.ACCESS_LEVEL,
+            Events.AVAILABILITY,
+            Events.HAS_ALARM,
+            Events.HAS_EXTENDED_PROPERTIES,
+            Events.RRULE,
+            Events.RDATE,
+            Events.EXRULE,
+            Events.EXDATE,
+            Events.ORIGINAL_ID,
+            Events.ORIGINAL_SYNC_ID,
+            Events.ORIGINAL_INSTANCE_TIME,
+            Events.ORIGINAL_ALL_DAY,
+            Events.LAST_DATE,
+            Events.HAS_ATTENDEE_DATA,
+            Events.GUESTS_CAN_MODIFY,
+            Events.GUESTS_CAN_INVITE_OTHERS,
+            Events.GUESTS_CAN_SEE_GUESTS,
+            Events.ORGANIZER,
+            Events.DELETED,
+            Events._SYNC_ID,
+            Events.SYNC_DATA4,
+            Events.SYNC_DATA5,
+            Events.DIRTY,
+            Events.SYNC_DATA8,
+            Events.SYNC_DATA2, // Events.SYNC_DATA1
+            // Events.SYNC_DATA2
+            // Events.SYNC_DATA3
+            // Events.SYNC_DATA4
+        };
+        // @formatter:on
+
+        private EventHelper() {}    // do not instantiate this class
+
+        /**
+         * Constructs a set of name/value pairs that can be used to create a Calendar event.
+         * Various fields are generated from the seed value.
+         */
+        public static ContentValues getNewEventValues(
+                String account, int seed, long calendarId, boolean asSyncAdapter) {
+            String seedString = Long.toString(seed);
+            ContentValues values = new ContentValues();
+            values.put(Events.ORGANIZER, "ORGANIZER:" + seedString);
+
+            values.put(Events.TITLE, "TITLE:" + seedString);
+            values.put(Events.EVENT_LOCATION, "LOCATION_" + seedString);
+
+            values.put(Events.CALENDAR_ID, calendarId);
+
+            values.put(Events.DESCRIPTION, "DESCRIPTION:" + seedString);
+            values.put(Events.STATUS, seed % 3);
+
+            values.put(Events.DTSTART, seed);
+            values.put(Events.DTEND, seed + DateUtils.HOUR_IN_MILLIS);
+            values.put(Events.EVENT_TIMEZONE, TIME_ZONES[seed % TIME_ZONES.length]);
+            // values.put(Events.EVENT_TIMEZONE2, TIME_ZONES[(seed +1) %
+            // TIME_ZONES.length]);
+            if ((seed % 2) == 0) {
+                // Either set to zero, or leave unset to get default zero.
+                // Must be 0 or dtstart/dtend will get adjusted.
+                values.put(Events.ALL_DAY, 0);
+            }
+            values.put(Events.ACCESS_LEVEL, seed % 4);
+            values.put(Events.AVAILABILITY, seed % 2);
+            values.put(Events.HAS_ALARM, seed % 2);
+            values.put(Events.HAS_EXTENDED_PROPERTIES, seed % 2);
+            values.put(Events.HAS_ATTENDEE_DATA, seed % 2);
+            values.put(Events.GUESTS_CAN_MODIFY, seed % 2);
+            values.put(Events.GUESTS_CAN_INVITE_OTHERS, seed % 2);
+            values.put(Events.GUESTS_CAN_SEE_GUESTS, seed % 2);
+
+            if (asSyncAdapter) {
+                values.put(Events._SYNC_ID, "SYNC_ID:" + seedString);
+                values.put(Events.SYNC_DATA4, "SYNC_V:" + seedString);
+                values.put(Events.SYNC_DATA5, "SYNC_TIME:" + seedString);
+                values.put(Events.SYNC_DATA3, "HTML:" + seedString);
+                values.put(Events.SYNC_DATA6, "COMMENTS:" + seedString);
+                values.put(Events.DIRTY, 0);
+                values.put(Events.SYNC_DATA8, "0");
+            } else {
+                // only the sync adapter can set the DIRTY flag
+                //values.put(Events.DIRTY, 1);
+            }
+            // values.put(Events.SYNC1, "SYNC1:" + seedString);
+            // values.put(Events.SYNC2, "SYNC2:" + seedString);
+            // values.put(Events.SYNC3, "SYNC3:" + seedString);
+            // values.put(Events.SYNC4, "SYNC4:" + seedString);
+            // values.put(Events.SYNC5, "SYNC5:" + seedString);
+//            Events.RRULE,
+//            Events.RDATE,
+//            Events.EXRULE,
+//            Events.EXDATE,
+//            // Events.ORIGINAL_ID
+//            Events.ORIGINAL_EVENT, // rename ORIGINAL_SYNC_ID
+//            Events.ORIGINAL_INSTANCE_TIME,
+//            Events.ORIGINAL_ALL_DAY,
+
+            return values;
+        }
+
+        /**
+         * Constructs a set of name/value pairs that can be used to create a recurring
+         * Calendar event.
+         *
+         * A duration of "P1D" is treated as an all-day event.
+         *
+         * @param startWhen Starting date/time in RFC 3339 format
+         * @param duration Event duration, in RFC 2445 duration format
+         * @param rrule Recurrence rule
+         * @return name/value pairs to use when creating event
+         */
+        public static ContentValues getNewRecurringEventValues(String account, int seed,
+                long calendarId, boolean asSyncAdapter, String startWhen, String duration,
+                String rrule) {
+
+            // Set up some general stuff.
+            ContentValues values = getNewEventValues(account, seed, calendarId, asSyncAdapter);
+
+            // Replace the DTSTART field.
+            String timeZone = values.getAsString(Events.EVENT_TIMEZONE);
+            Time time = new Time(timeZone);
+            time.parse3339(startWhen);
+            values.put(Events.DTSTART, time.toMillis(false));
+
+            // Add in the recurrence-specific fields, and drop DTEND.
+            values.put(Events.RRULE, rrule);
+            values.put(Events.DURATION, duration);
+            values.remove(Events.DTEND);
+
+            return values;
+        }
+
+        /**
+         * Constructs the basic name/value pairs required for an exception to a recurring event.
+         *
+         * @param instanceStartMillis The start time of the instance
+         * @return name/value pairs to use when creating event
+         */
+        public static ContentValues getNewExceptionValues(long instanceStartMillis) {
+            ContentValues values = new ContentValues();
+            values.put(Events.ORIGINAL_INSTANCE_TIME, instanceStartMillis);
+
+            return values;
+        }
+
+        public static ContentValues getUpdateEventValuesWithOriginal(ContentValues original,
+                int seed, boolean asSyncAdapter) {
+            String seedString = Long.toString(seed);
+            ContentValues values = new ContentValues();
+
+            values.put(Events.TITLE, "TITLE:" + seedString);
+            values.put(Events.EVENT_LOCATION, "LOCATION_" + seedString);
+            values.put(Events.DESCRIPTION, "DESCRIPTION:" + seedString);
+            values.put(Events.STATUS, seed % 3);
+
+            values.put(Events.DTSTART, seed);
+            values.put(Events.DTEND, seed + DateUtils.HOUR_IN_MILLIS);
+            values.put(Events.EVENT_TIMEZONE, TIME_ZONES[seed % TIME_ZONES.length]);
+            // values.put(Events.EVENT_TIMEZONE2, TIME_ZONES[(seed +1) %
+            // TIME_ZONES.length]);
+            values.put(Events.ACCESS_LEVEL, seed % 4);
+            values.put(Events.AVAILABILITY, seed % 2);
+            values.put(Events.HAS_ALARM, seed % 2);
+            values.put(Events.HAS_EXTENDED_PROPERTIES, seed % 2);
+            values.put(Events.HAS_ATTENDEE_DATA, seed % 2);
+            values.put(Events.GUESTS_CAN_MODIFY, seed % 2);
+            values.put(Events.GUESTS_CAN_INVITE_OTHERS, seed % 2);
+            values.put(Events.GUESTS_CAN_SEE_GUESTS, seed % 2);
+            if (asSyncAdapter) {
+                values.put(Events._SYNC_ID, "SYNC_ID:" + seedString);
+                values.put(Events.SYNC_DATA4, "SYNC_V:" + seedString);
+                values.put(Events.SYNC_DATA5, "SYNC_TIME:" + seedString);
+                values.put(Events.DIRTY, 0);
+            }
+            original.putAll(values);
+            return values;
+        }
+
+        public static void addDefaultReadOnlyValues(ContentValues values, String account,
+                boolean asSyncAdapter) {
+            values.put(Events.SELF_ATTENDEE_STATUS, Events.STATUS_TENTATIVE);
+            values.put(Events.DELETED, 0);
+            values.put(Events.DIRTY, asSyncAdapter ? 0 : 1);
+            values.put(Events.OWNER_ACCOUNT, CalendarHelper.generateCalendarOwnerEmail(account));
+            values.put(Events.ACCOUNT_TYPE, CTS_TEST_TYPE);
+            values.put(Events.ACCOUNT_NAME, account);
+        }
+
+        /**
+         * Generates a RFC2445-format duration string.
+         */
+        private static String generateDurationString(long durationMillis, boolean isAllDay) {
+            long durationSeconds = durationMillis / 1000;
+
+            // The server may react differently to an all-day event specified as "P1D" than
+            // it will to "PT86400S"; see b/1594638.
+            if (isAllDay && (durationSeconds % 86400) == 0) {
+                return "P" + durationSeconds / 86400 + "D";
+            } else {
+                return "PT" + durationSeconds + "S";
+            }
+        }
+
+        /**
+         * Deletes the event, and updates the values.
+         * @param resolver The resolver to issue the query against.
+         * @param uri The deletion URI.
+         * @param values Set of values to update (sets DELETED and DIRTY).
+         * @return The number of rows modified.
+         */
+        public static int deleteEvent(ContentResolver resolver, Uri uri, ContentValues values) {
+            values.put(Events.DELETED, 1);
+            values.put(Events.DIRTY, 1);
+            return resolver.delete(uri, null, null);
+        }
+
+        public static int deleteEventAsSyncAdapter(ContentResolver resolver, Uri uri,
+                String account) {
+            Uri syncUri = asSyncAdapter(uri, account, CTS_TEST_TYPE);
+            return resolver.delete(syncUri, null, null);
+        }
+
+        public static Cursor getEventsByAccount(ContentResolver resolver, String account) {
+            String selection = Calendars.ACCOUNT_TYPE + "=?";
+            String[] selectionArgs;
+            if (account != null) {
+                selection += " AND " + Calendars.ACCOUNT_NAME + "=?";
+                selectionArgs = new String[2];
+                selectionArgs[1] = account;
+            } else {
+                selectionArgs = new String[1];
+            }
+            selectionArgs[0] = CTS_TEST_TYPE;
+            return resolver.query(Events.CONTENT_URI, EVENTS_PROJECTION, selection, selectionArgs,
+                    null);
+        }
+
+        public static Cursor getEventByUri(ContentResolver resolver, Uri uri) {
+            return resolver.query(uri, EVENTS_PROJECTION, null, null, null);
+        }
+    }
+
+    static Uri asSyncAdapter(Uri uri, String account, String accountType) {
+        return uri.buildUpon()
+                .appendQueryParameter(android.provider.CalendarContract.CALLER_IS_SYNCADAPTER,
+                        "true")
+                .appendQueryParameter(Calendars.ACCOUNT_NAME, account)
+                .appendQueryParameter(Calendars.ACCOUNT_TYPE, accountType).build();
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mContentResolver = getInstrumentation().getTargetContext().getContentResolver();
+        // IContentProvider provider = mContentResolver.acquireProvider(Calendar.AUTHORITY);
+        // mBuilder = new ContactsContract_TestDataBuilder(provider);
+    }
+
+    @MediumTest
+    public void testCalendarCreationAndDeletion() {
+        String account = "cc1_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+        long id = createAndVerifyCalendar(account, seed++, null);
+
+        removeAndVerifyCalendar(account, id);
+    }
+
+    /**
+     * Tests whether the default projections work.  We don't need to have any data in
+     * the calendar, since it's testing the database schema.
+     */
+    @MediumTest
+    public void testDefaultProjections() {
+        String account = "dproj_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+        long id = createAndVerifyCalendar(account, seed++, null);
+
+        Cursor c;
+        Uri uri;
+        // Calendars
+        c = mContentResolver.query(Calendars.CONTENT_URI, null, null, null, null);
+        c.close();
+        // Events
+        c = mContentResolver.query(Events.CONTENT_URI, null, null, null, null);
+        c.close();
+        // Instances
+        uri = Uri.withAppendedPath(Instances.CONTENT_URI, "0/1");
+        c = mContentResolver.query(uri, null, null, null, null);
+        c.close();
+        // Attendees
+        c = mContentResolver.query(Attendees.CONTENT_URI, null, null, null, null);
+        c.close();
+        // Reminders (only REMINDERS_ID currently uses default projection)
+        uri = ContentUris.withAppendedId(Reminders.CONTENT_URI, 0);
+        c = mContentResolver.query(uri, null, null, null, null);
+        c.close();
+        // CalendarAlerts
+        c = mContentResolver.query(CalendarContract.CalendarAlerts.CONTENT_URI,
+                null, null, null, null);
+        c.close();
+        // CalendarCache
+        c = mContentResolver.query(CalendarContract.CalendarCache.URI,
+                null, null, null, null);
+        c.close();
+        // CalendarEntity
+        c = mContentResolver.query(CalendarContract.CalendarEntity.CONTENT_URI,
+                null, null, null, null);
+        c.close();
+        // EventEntities
+        c = mContentResolver.query(CalendarContract.EventsEntity.CONTENT_URI,
+                null, null, null, null);
+        c.close();
+        // EventDays
+        uri = Uri.withAppendedPath(CalendarContract.EventDays.CONTENT_URI, "1/2");
+        c = mContentResolver.query(uri, null, null, null, null);
+        c.close();
+        // ExtendedProperties
+        c = mContentResolver.query(CalendarContract.ExtendedProperties.CONTENT_URI,
+                null, null, null, null);
+        c.close();
+
+        removeAndVerifyCalendar(account, id);
+    }
+
+    @MediumTest
+    public void testCalendarUpdateAsApp() {
+        String account = "cu1_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+
+        // Create a calendar
+        ContentValues values = CalendarHelper.getNewCalendarValues(account, seed);
+        long id = createAndVerifyCalendar(account, seed++, values);
+
+        Uri uri = ContentUris.withAppendedId(Calendars.CONTENT_URI, id);
+
+        // Update the calendar using the direct Uri
+        ContentValues updateValues = CalendarHelper.getUpdateCalendarValuesWithOriginal(
+                values, seed++);
+        assertEquals(1, mContentResolver.update(uri, updateValues, null, null));
+
+        verifyCalendar(account, values, id);
+
+        // Update the calendar using selection + args
+        String selection = Calendars._ID + "=?";
+        String[] selectionArgs = new String[] { Long.toString(id) };
+
+        updateValues = CalendarHelper.getUpdateCalendarValuesWithOriginal(values, seed++);
+
+        assertEquals(1, mContentResolver.update(
+                Calendars.CONTENT_URI, updateValues, selection, selectionArgs));
+
+        verifyCalendar(account, values, id);
+
+        removeAndVerifyCalendar(account, id);
+    }
+
+    // TODO test calendar updates as sync adapter
+
+    private void verifyEvent(ContentValues values, long eventId) {
+        Uri eventUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventId);
+        // Verify
+        Cursor c = mContentResolver
+                .query(eventUri, EventHelper.EVENTS_PROJECTION, null, null, null);
+        assertEquals(1, c.getCount());
+        assertTrue(c.moveToFirst());
+        assertEquals(eventId, c.getLong(0));
+        for (String key : values.keySet()) {
+            int index = c.getColumnIndex(key);
+            assertEquals(key, values.getAsString(key), c.getString(index));
+        }
+        c.close();
+    }
+
+    @MediumTest
+    public void testEventCreationAndDeletion() {
+        String account = "ec1_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+
+        // Create calendar and event
+        long calendarId = createAndVerifyCalendar(account, seed++, null);
+
+        ContentValues eventValues = EventHelper
+                .getNewEventValues(account, seed++, calendarId, true);
+        long eventId = createAndVerifyEvent(account, seed, calendarId, true, eventValues);
+
+        Uri eventUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventId);
+
+        removeAndVerifyEvent(eventUri, eventValues, account);
+
+        removeAndVerifyCalendar(account, calendarId);
+    }
+
+    @MediumTest
+    public void testEventUpdateAsApp() {
+        String account = "em1_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+
+        // Create calendar
+        long calendarId = createAndVerifyCalendar(account, seed++, null);
+
+        // Create event as sync adapter
+        ContentValues eventValues = EventHelper
+                .getNewEventValues(account, seed++, calendarId, true);
+        long eventId = createAndVerifyEvent(account, seed, calendarId, true, eventValues);
+
+        // Update event as app
+        Uri eventUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventId);
+
+        ContentValues updateValues = EventHelper.getUpdateEventValuesWithOriginal(eventValues,
+                seed++, false);
+        assertEquals(1, mContentResolver.update(eventUri, updateValues, null, null));
+        updateValues.put(Events.DIRTY, 1);      // provider should have marked as dirty
+        verifyEvent(updateValues, eventId);
+
+        removeAndVerifyEvent(eventUri, eventValues, account);
+
+        // delete the calendar
+        removeAndVerifyCalendar(account, calendarId);
+    }
+
+    /**
+     * Tests update of multiple events with a single update call.
+     */
+    @MediumTest
+    public void testBulkUpdate() {
+        String account = "bup_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+
+        // Create calendar
+        long calendarId = createAndVerifyCalendar(account, seed++, null);
+        String calendarIdStr = String.valueOf(calendarId);
+
+        // Create events
+        ContentValues eventValues;
+        eventValues = EventHelper.getNewEventValues(account, seed++, calendarId, true);
+        long eventId1 = createAndVerifyEvent(account, seed, calendarId, true, eventValues);
+
+        eventValues = EventHelper.getNewEventValues(account, seed++, calendarId, true);
+        long eventId2 = createAndVerifyEvent(account, seed, calendarId, true, eventValues);
+
+        // Update the "description" field in all events in this calendar.
+        String newDescription = "bulk edit";
+        ContentValues updateValues = new ContentValues();
+        updateValues.put(Events.DESCRIPTION, newDescription);
+
+        // Must be sync adapter to do a bulk update.
+        Uri uri = asSyncAdapter(Events.CONTENT_URI, account, CTS_TEST_TYPE);
+        int count = mContentResolver.update(uri, updateValues, SQL_WHERE_CALENDAR_ID,
+                new String[] { calendarIdStr });
+
+        // Check to see if the changes went through.
+        Uri eventUri = Events.CONTENT_URI;
+        Cursor c = mContentResolver.query(eventUri, new String[] { Events.DESCRIPTION },
+                SQL_WHERE_CALENDAR_ID, new String[] { calendarIdStr }, null);
+        assertEquals(2, c.getCount());
+        while (c.moveToNext()) {
+            assertEquals(newDescription, c.getString(0));
+        }
+        c.close();
+    }
+
+    /**
+     * Tests the content provider's enforcement of restrictions on who is allowed to modify
+     * specific columns in a Calendar.
+     * <p>
+     * This attempts to create a new row in the Calendar table, specifying one restricted
+     * column at a time.
+     */
+    @MediumTest
+    public void testSyncOnlyInsertEnforcement() {
+        // These operations should not succeed, so there should be nothing to clean up after.
+        // TODO: this should be a new event augmented with an illegal column, not a single
+        //       column.  Otherwise we might be tripping over a "DTSTART must exist" test.
+        ContentValues vals = new ContentValues();
+        for (int i = 0; i < Calendars.SYNC_WRITABLE_COLUMNS.length; i++) {
+            boolean threw = false;
+            try {
+                vals.clear();
+                vals.put(Calendars.SYNC_WRITABLE_COLUMNS[i], "1");
+                mContentResolver.insert(Calendars.CONTENT_URI, vals);
+            } catch (IllegalArgumentException e) {
+                threw = true;
+            }
+            assertTrue("Only sync adapter should be allowed to insert "
+                    + Calendars.SYNC_WRITABLE_COLUMNS[i], threw);
+        }
+    }
+
+    /**
+     * Tests creation of a recurring event.
+     * <p>
+     * This (and the other recurrence tests) uses dates well in the past to reduce the likelihood
+     * of encountering non-test recurring events.  (Ideally we would select events associated
+     * with a specific calendar.)  With dates well in the past, it's also important to have a
+     * fixed maximum count or end date; otherwise, if the metadata min/max instance values are
+     * large enough, the recurrence recalculation processor could get triggered on an insert or
+     * update and bump up against the 2000-instance limit.
+     *
+     * TODO: need some allDay tests
+     */
+    @MediumTest
+    public void testRecurrence() {
+        String account = "re_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+
+        // Create calendar
+        long calendarId = createAndVerifyCalendar(account, seed++, null);
+
+        // Create recurring event
+        ContentValues eventValues = EventHelper.getNewRecurringEventValues(account, seed++,
+                calendarId, true, "2003-08-05T09:00:00", "PT1H",
+                "FREQ=WEEKLY;INTERVAL=2;COUNT=4;BYDAY=TU,SU;WKST=SU");
+        long eventId = createAndVerifyEvent(account, seed, calendarId, true, eventValues);
+        //Log.d(TAG, "+++ basic recurrence eventId is " + eventId);
+
+        // Check to see if we have the expected number of instances
+        String timeZone = eventValues.getAsString(Events.EVENT_TIMEZONE);
+        int instanceCount = getInstanceCount(timeZone, "2003-08-05T00:00:00",
+                "2003-08-31T11:59:59");
+        if (false) {
+            Cursor instances = getInstances(timeZone, "2003-08-05T00:00:00", "2003-08-31T11:59:59",
+                    new String[] { Instances.BEGIN });
+            dumpInstances(instances, timeZone, "initial");
+        }
+        assertEquals("recurrence instance count", 4, instanceCount);
+
+        // delete the calendar
+        removeAndVerifyCalendar(account, calendarId);
+    }
+
+    /**
+     * Tests conversion of a regular event to a recurring event.
+     */
+    @MediumTest
+    public void testConversionToRecurring() {
+        String account = "reconv_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+
+        // Create calendar and event
+        long calendarId = createAndVerifyCalendar(account, seed++, null);
+
+        ContentValues eventValues = EventHelper
+                .getNewEventValues(account, seed++, calendarId, true);
+        long eventId = createAndVerifyEvent(account, seed, calendarId, true, eventValues);
+
+        long dtstart = eventValues.getAsLong(Events.DTSTART);
+        long dtend = eventValues.getAsLong(Events.DTEND);
+        long durationSecs = (dtend - dtstart) / 1000;
+
+        ContentValues updateValues = new ContentValues();
+        updateValues.put(Events.RRULE, "FREQ=WEEKLY");   // recurs forever
+        updateValues.put(Events.DURATION, "P" + durationSecs + "S");
+        updateValues.putNull(Events.DTEND);
+
+        // Issue update; do it as app instead of sync adapter to exercise that path.
+        updateAndVerifyEvent(account, calendarId, eventId, false, updateValues);
+
+        // Make sure LAST_DATE got nulled out by our infinitely repeating sequence.
+        Uri eventUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventId);
+        Cursor c = mContentResolver.query(eventUri, new String[] { Events.LAST_DATE },
+                null, null, null);
+        assertEquals(1, c.getCount());
+        assertTrue(c.moveToFirst());
+        assertNull(c.getString(0));
+        c.close();
+
+        removeAndVerifyCalendar(account, calendarId);
+    }
+
+    /**
+     * Tests creation of a recurring event with single-instance exceptions.
+     */
+    @MediumTest
+    public void testSingleRecurrenceExceptions() {
+        String account = "rex_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+
+        // Create calendar
+        long calendarId = createAndVerifyCalendar(account, seed++, null);
+
+        // Create recurring event.
+        ContentValues eventValues = EventHelper.getNewRecurringEventValues(account, seed++,
+                calendarId, true, "1999-03-28T09:00:00", "PT1H", "FREQ=WEEKLY;WKST=SU;COUNT=100");
+        long eventId = createAndVerifyEvent(account, seed++, calendarId, true, eventValues);
+
+        // Add some attendees and reminders.
+        addAttendees(account, eventId, seed);
+        addReminders(account, eventId, seed);
+
+        // Select a period that gives us 5 instances.
+        String timeZone = eventValues.getAsString(Events.EVENT_TIMEZONE);
+        String testStart = "1999-03-28T00:00:00";
+        String testEnd = "1999-04-25T23:59:59";
+        String[] projection = { Instances.BEGIN, Instances.START_MINUTE, Instances.END_MINUTE };
+
+        Cursor instances = getInstances(timeZone, testStart, testEnd, projection);
+        if (DEBUG_RECURRENCE) {
+            dumpInstances(instances, timeZone, "initial");
+        }
+
+        assertEquals("initial recurrence instance count", 5, instances.getCount());
+
+        /*
+         * Advance the start time of a few instances, and verify.
+         */
+
+        // Leave first instance alone.
+        instances.moveToPosition(1);
+
+        long startMillis;
+        ContentValues excepValues;
+
+        // Advance the start time of the 2nd instance.
+        startMillis = instances.getLong(0);
+        excepValues = EventHelper.getNewExceptionValues(startMillis);
+        excepValues.put(Events.DTSTART, startMillis + 3600*1000);
+        long excepEventId2 = createAndVerifyException(account, eventId, excepValues, true);
+        instances.moveToNext();
+
+        // Advance the start time of the 3rd instance.
+        startMillis = instances.getLong(0);
+        excepValues = EventHelper.getNewExceptionValues(startMillis);
+        excepValues.put(Events.DTSTART, startMillis + 3600*1000*2);
+        long excepEventId3 = createAndVerifyException(account, eventId, excepValues, true);
+        instances.moveToNext();
+
+        // Cancel the 4th instance.
+        startMillis = instances.getLong(0);
+        excepValues = EventHelper.getNewExceptionValues(startMillis);
+        excepValues.put(Events.STATUS, Events.STATUS_CANCELED);
+        long excepEventId4 = createAndVerifyException(account, eventId, excepValues, true);
+        instances.moveToNext();
+
+        // TODO: try to modify a non-existent instance.
+
+        instances.close();
+
+        // TODO: compare Reminders, Attendees, ExtendedProperties on one of the exception events
+
+        // Re-query the instances and figure out if they look right.
+        instances = getInstances(timeZone, testStart, testEnd, projection);
+        if (DEBUG_RECURRENCE) {
+            dumpInstances(instances, timeZone, "with DTSTART exceptions");
+        }
+        assertEquals("exceptional recurrence instance count", 4, instances.getCount());
+
+        long prevMinute = -1;
+        while (instances.moveToNext()) {
+            // expect the start times for each entry to be different from the previous entry
+            long startMinute = instances.getLong(1);
+            assertTrue("instance start times are different", startMinute != prevMinute);
+
+            prevMinute = startMinute;
+        }
+        instances.close();
+
+
+        // Delete all of our exceptions, and verify.
+        int deleteCount = 0;
+        deleteCount += deleteException(account, eventId, excepEventId2);
+        deleteCount += deleteException(account, eventId, excepEventId3);
+        deleteCount += deleteException(account, eventId, excepEventId4);
+        assertEquals("events deleted", 3, deleteCount);
+
+        // Re-query the instances and figure out if they look right.
+        instances = getInstances(timeZone, testStart, testEnd, projection);
+        if (DEBUG_RECURRENCE) {
+            dumpInstances(instances, timeZone, "post exception deletion");
+        }
+        assertEquals("post-exception deletion instance count", 5, instances.getCount());
+
+        prevMinute = -1;
+        while (instances.moveToNext()) {
+            // expect the start times for each entry to be the same
+            long startMinute = instances.getLong(1);
+            if (prevMinute != -1) {
+                assertEquals("instance start times are the same", startMinute, prevMinute);
+            }
+            prevMinute = startMinute;
+        }
+        instances.close();
+
+        /*
+         * Repeat the test, this time modifying DURATION.
+         */
+
+        instances = getInstances(timeZone, testStart, testEnd, projection);
+        if (DEBUG_RECURRENCE) {
+            dumpInstances(instances, timeZone, "initial");
+        }
+
+        assertEquals("initial recurrence instance count", 5, instances.getCount());
+
+        // Leave first instance alone.
+        instances.moveToPosition(1);
+
+        // Advance the end time of the 2nd instance.
+        startMillis = instances.getLong(0);
+        excepValues = EventHelper.getNewExceptionValues(startMillis);
+        excepValues.put(Events.DURATION, "P" + 3600*2 + "S");
+        excepEventId2 = createAndVerifyException(account, eventId, excepValues, true);
+        instances.moveToNext();
+
+        // Advance the end time of the 3rd instance, and change the self-attendee status.
+        startMillis = instances.getLong(0);
+        excepValues = EventHelper.getNewExceptionValues(startMillis);
+        excepValues.put(Events.DURATION, "P" + 3600*3 + "S");
+        excepValues.put(Events.SELF_ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_DECLINED);
+        excepEventId3 = createAndVerifyException(account, eventId, excepValues, true);
+        instances.moveToNext();
+
+        // Advance the start time of the 4th instance, which will also advance the end time.
+        startMillis = instances.getLong(0);
+        excepValues = EventHelper.getNewExceptionValues(startMillis);
+        excepValues.put(Events.DTSTART, startMillis + 3600*1000);
+        excepEventId4 = createAndVerifyException(account, eventId, excepValues, true);
+        instances.moveToNext();
+
+        instances.close();
+
+        // TODO: make sure the selfAttendeeStatus change took
+
+        // Re-query the instances and figure out if they look right.
+        instances = getInstances(timeZone, testStart, testEnd, projection);
+        if (DEBUG_RECURRENCE) {
+            dumpInstances(instances, timeZone, "with DURATION exceptions");
+        }
+        assertEquals("exceptional recurrence instance count", 5, instances.getCount());
+
+        prevMinute = -1;
+        while (instances.moveToNext()) {
+            // expect the start times for each entry to be different from the previous entry
+            long endMinute = instances.getLong(2);
+            assertTrue("instance end times are different", endMinute != prevMinute);
+
+            prevMinute = endMinute;
+        }
+        instances.close();
+
+        // delete the calendar
+        removeAndVerifyCalendar(account, calendarId);
+    }
+
+    /**
+     * Tests creation of a simple recurrence exception when not pretending to be the sync
+     * adapter.  One significant consequence is that we don't set the _sync_id field in the
+     * events, which affects how the provider correlates recurrences and exceptions.
+     */
+    @MediumTest
+    public void testNonAdapterRecurrenceExceptions() {
+        String account = "rena_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+
+        // Create calendar
+        long calendarId = createAndVerifyCalendar(account, seed++, null);
+
+        // Generate recurring event, with "asSyncAdapter" set to false.
+        ContentValues eventValues = EventHelper.getNewRecurringEventValues(account, seed++,
+                calendarId, false, "1991-02-03T12:00:00", "PT1H", "FREQ=DAILY;WKST=SU;COUNT=10");
+
+        // Select a period that gives us 3 instances.
+        String timeZone = eventValues.getAsString(Events.EVENT_TIMEZONE);
+        String testStart = "1991-02-03T00:00:00";
+        String testEnd = "1991-02-05T23:59:59";
+        String[] projection = { Instances.BEGIN, Instances.START_MINUTE };
+
+        // Expand the bounds of the instances table so we expand future events as they are added.
+        expandInstanceRange(account, calendarId, testStart, testEnd, timeZone);
+
+        // Create the event in the database.
+        long eventId = createAndVerifyEvent(account, seed++, calendarId, false, eventValues);
+        assertTrue(eventId >= 0);
+
+        // Add some attendees.
+        addAttendees(account, eventId, seed);
+
+        Cursor instances = getInstances(timeZone, testStart, testEnd, projection);
+        if (DEBUG_RECURRENCE) {
+            dumpInstances(instances, timeZone, "initial");
+        }
+        assertEquals("initial recurrence instance count", 3, instances.getCount());
+
+        /*
+         * Alter the attendee status of the second event.  This should cause the instances to
+         * be updated, replacing the previous 2nd instance with the exception instance.  If the
+         * code is broken we'll see four instances (because the original instance didn't get
+         * removed) or one instance (because the code correctly deleted all related events but
+         * couldn't correlate the exception with its original recurrence).
+         */
+
+        // Leave first instance alone.
+        instances.moveToPosition(1);
+
+        long startMillis;
+        ContentValues excepValues;
+
+        // Advance the start time of the 2nd instance.
+        startMillis = instances.getLong(0);
+        excepValues = EventHelper.getNewExceptionValues(startMillis);
+        excepValues.put(Events.SELF_ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_DECLINED);
+        long excepEventId2 = createAndVerifyException(account, eventId, excepValues, false);
+        instances.moveToNext();
+
+        instances.close();
+
+        // Re-query the instances and figure out if they look right.
+        instances = getInstances(timeZone, testStart, testEnd, projection);
+        if (DEBUG_RECURRENCE) {
+            dumpInstances(instances, timeZone, "with exceptions");
+        }
+
+        // TODO: this test currently fails due to limitations in the provider
+        //assertEquals("exceptional recurrence instance count", 3, instances.getCount());
+
+        instances.close();
+
+        // delete the calendar
+        removeAndVerifyCalendar(account, calendarId);
+    }
+
+    /**
+     * Tests creation of a simple recurrence exception where the exception is created first.
+     * Simulates out-of-order delivery from the server.
+     * <p>
+     * We can't use the /exception URI, because that only works if the events are created
+     * in order.
+     */
+    @MediumTest
+    public void testOutOfOrderRecurrenceExceptions() {
+        String account = "reooo_account";
+        String startWhen = "1987-08-09T12:00:00";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+
+        // Create calendar
+        long calendarId = createAndVerifyCalendar(account, seed++, null);
+
+        // Generate base event.
+        ContentValues eventValues = EventHelper.getNewRecurringEventValues(account, seed,
+                calendarId, true, startWhen, "PT1H", "FREQ=DAILY;WKST=SU;COUNT=10");
+
+        // Select a period that gives us 3 instances.
+        String timeZone = eventValues.getAsString(Events.EVENT_TIMEZONE);
+        String testStart = "1987-08-09T00:00:00";
+        String testEnd = "1987-08-11T23:59:59";
+        String[] projection = { Instances.BEGIN, Instances.START_MINUTE, Instances.EVENT_ID };
+
+        /*
+         * We're interested in exploring what the instance expansion code does with the events
+         * as they arrive.  It won't do anything at event-creation time unless the instance
+         * range already covers the interesting set of dates, so we need to create and remove
+         * an instance in the same time frame beforehand.
+         */
+        expandInstanceRange(account, calendarId, testStart, testEnd, timeZone);
+
+        /*
+         * Instances table should be expanded.  Do the test.
+         */
+
+        // Generate exception from base.  We shift the start time by half an hour.
+        ContentValues excepValues = new ContentValues(eventValues);
+        excepValues.remove(Events._SYNC_ID);
+        excepValues.put(Events.ORIGINAL_SYNC_ID, eventValues.getAsString(Events._SYNC_ID));
+
+        long dtstartMillis = excepValues.getAsLong(Events.DTSTART);
+        dtstartMillis += 24 * 60 * 60 * 1000;       // add one day -- use the second instance
+        excepValues.put(Events.ORIGINAL_INSTANCE_TIME, dtstartMillis);
+        dtstartMillis += 1800 * 1000;
+        excepValues.put(Events.DTSTART, dtstartMillis);
+        excepValues.put(Events.DTEND, dtstartMillis + 3600*1000);
+        excepValues.remove(Events.DURATION);
+        excepValues.remove(Events.RRULE);
+
+        // Create exception event.
+        long excepId = createAndVerifyEvent(account, seed, calendarId, true, excepValues);
+        assertTrue(excepId >= 0);
+
+        // Create recurring event.
+        long eventId = createAndVerifyEvent(account, seed, calendarId, true, eventValues);
+        assertTrue(eventId >= 0);
+
+        // Check to see how many instances we get.  If the recurrence and the exception don't
+        // get paired up correctly, we'll see one instance too many.
+        Cursor instances = getInstances(timeZone, testStart, testEnd, projection);
+        if (DEBUG_RECURRENCE) {
+            dumpInstances(instances, timeZone, "with exception");
+        }
+
+        assertEquals("initial recurrence instance count", 3, instances.getCount());
+
+        instances.close();
+
+        // delete the calendar
+        removeAndVerifyCalendar(account, calendarId);
+    }
+
+    /**
+     * Tests exceptions that modify all future instances of a recurring event.
+     */
+    @MediumTest
+    public void testForwardRecurrenceExceptions() {
+        String account = "refx_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+
+        // Create calendar
+        long calendarId = createAndVerifyCalendar(account, seed++, null);
+
+        // Create recurring event
+        ContentValues eventValues = EventHelper.getNewRecurringEventValues(account, seed++,
+                calendarId, true, "1999-01-01T06:00:00", "PT1H", "FREQ=WEEKLY;WKST=SU;COUNT=10");
+        long eventId = createAndVerifyEvent(account, seed++, calendarId, true, eventValues);
+
+        // Add some attendees and reminders.
+        addAttendees(account, eventId, seed++);
+        addReminders(account, eventId, seed++);
+
+        // Get some instances.
+        String timeZone = eventValues.getAsString(Events.EVENT_TIMEZONE);
+        String testStart = "1999-01-01T00:00:00";
+        String testEnd = "1999-01-29T23:59:59";
+        String[] projection = { Instances.BEGIN, Instances.START_MINUTE };
+
+        Cursor instances = getInstances(timeZone, testStart, testEnd, projection);
+        if (DEBUG_RECURRENCE) {
+            dumpInstances(instances, timeZone, "initial");
+        }
+
+        assertEquals("initial recurrence instance count", 5, instances.getCount());
+
+        // Modify starting from 3rd instance.
+        instances.moveToPosition(2);
+
+        long startMillis;
+        ContentValues excepValues;
+
+        // Replace with a new recurrence rule.  We move the start time an hour later, and cap
+        // it at two instances.
+        startMillis = instances.getLong(0);
+        excepValues = EventHelper.getNewExceptionValues(startMillis);
+        excepValues.put(Events.DTSTART, startMillis + 3600*1000);
+        excepValues.put(Events.RRULE, "FREQ=WEEKLY;COUNT=2;WKST=SU");
+        long excepEventId = createAndVerifyException(account, eventId, excepValues, true);
+        instances.close();
+
+
+        // Check to see if it took.
+        instances = getInstances(timeZone, testStart, testEnd, projection);
+        if (DEBUG_RECURRENCE) {
+            dumpInstances(instances, timeZone, "with new rule");
+        }
+
+        assertEquals("count with exception", 4, instances.getCount());
+
+        long prevMinute = -1;
+        for (int i = 0; i < 4; i++) {
+            long startMinute;
+            instances.moveToNext();
+            switch (i) {
+                case 0:
+                    startMinute = instances.getLong(1);
+                    break;
+                case 1:
+                case 3:
+                    startMinute = instances.getLong(1);
+                    assertEquals("first/last pairs match", prevMinute, startMinute);
+                    break;
+                case 2:
+                    startMinute = instances.getLong(1);
+                    assertFalse("first two != last two", prevMinute == startMinute);
+                    break;
+                default:
+                    fail();
+                    startMinute = -1;   // make compiler happy
+                    break;
+            }
+
+            prevMinute = startMinute;
+        }
+        instances.close();
+
+        // delete the calendar
+        removeAndVerifyCalendar(account, calendarId);
+    }
+
+    /**
+     * Tests exceptions that modify all instances of a recurring event.  This is not really an
+     * exception, since it won't create a new event, but supporting it allows us to use the
+     * exception URI without having to determine whether the "start from here" instance is the
+     * very first instance.
+     */
+    @MediumTest
+    public void testFullRecurrenceUpdate() {
+        String account = "ref_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+
+        // Create calendar
+        long calendarId = createAndVerifyCalendar(account, seed++, null);
+
+        // Create recurring event
+        String rrule = "FREQ=DAILY;WKST=MO;COUNT=100";
+        ContentValues eventValues = EventHelper.getNewRecurringEventValues(account, seed++,
+                calendarId, true, "1997-08-29T02:14:00", "PT1H", rrule);
+        long eventId = createAndVerifyEvent(account, seed++, calendarId, true, eventValues);
+        //Log.i(TAG, "+++ eventId is " + eventId);
+
+        // Get some instances.
+        String timeZone = eventValues.getAsString(Events.EVENT_TIMEZONE);
+        String testStart = "1997-08-01T00:00:00";
+        String testEnd = "1997-08-31T23:59:59";
+        String[] projection = { Instances.BEGIN, Instances.EVENT_LOCATION };
+        String newLocation = "NEW!";
+
+        Cursor instances = getInstances(timeZone, testStart, testEnd, projection);
+        if (DEBUG_RECURRENCE) {
+            dumpInstances(instances, timeZone, "initial");
+        }
+
+        assertEquals("initial recurrence instance count", 3, instances.getCount());
+
+        instances.moveToFirst();
+        long startMillis = instances.getLong(0);
+        ContentValues excepValues = EventHelper.getNewExceptionValues(startMillis);
+        excepValues.put(Events.RRULE, rrule);   // identifies this as an "all future events" excep
+        excepValues.put(Events.EVENT_LOCATION, newLocation);
+        long excepEventId = createAndVerifyException(account, eventId, excepValues, true);
+        instances.close();
+
+        // Check results.
+        assertEquals("full update does not create new ID", eventId, excepEventId);
+
+        instances = getInstances(timeZone, testStart, testEnd, projection);
+        assertEquals("post-update instance count", 3, instances.getCount());
+        while (instances.moveToNext()) {
+            assertEquals("new location", newLocation, instances.getString(1));
+        }
+
+        // delete the calendar
+        removeAndVerifyCalendar(account, calendarId);
+    }
+
+    @MediumTest
+    public void testMultiRuleRecurrence() {
+        String account = "multirule_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+
+        // Create calendar
+        long calendarId = createAndVerifyCalendar(account, seed++, null);
+
+        // Create recurring event
+        String rrule = "FREQ=DAILY;WKST=MO;COUNT=5\nFREQ=WEEKLY;WKST=SU;COUNT=5";
+        ContentValues eventValues = EventHelper.getNewRecurringEventValues(account, seed++,
+                calendarId, true, "1997-08-29T02:14:00", "PT1H", rrule);
+        long eventId = createAndVerifyEvent(account, seed++, calendarId, true, eventValues);
+
+        // TODO: once multi-rule RRULEs are fully supported, verify that they work
+
+        // delete the calendar
+        removeAndVerifyCalendar(account, calendarId);
+    }
+
+    /**
+     * Issue bad requests and expect them to get rejected.
+     */
+    @MediumTest
+    public void testBadRequests() {
+        String account = "neg_account";
+        int seed = 0;
+
+        // Clean up just in case
+        CalendarHelper.deleteCalendarByAccount(mContentResolver, account);
+
+        // Create calendar
+        long calendarId = createAndVerifyCalendar(account, seed++, null);
+
+        // Create recurring event
+        String rrule = "FREQ=OFTEN;WKST=MO";
+        ContentValues eventValues = EventHelper.getNewRecurringEventValues(account, seed++,
+                calendarId, true, "1997-08-29T02:14:00", "PT1H", rrule);
+        try {
+            createAndVerifyEvent(account, seed++, calendarId, true, eventValues);
+            fail("Bad recurrence rule should have been rejected");
+        } catch (IllegalArgumentException iae) {
+            // good
+        }
+
+        // delete the calendar
+        removeAndVerifyCalendar(account, calendarId);
+    }
+
+    /**
+     * Acquires the set of instances that appear between the specified start and end points.
+     *
+     * @param timeZone Time zone to use when parsing startWhen and endWhen
+     * @param startWhen Start date/time, in RFC 3339 format
+     * @param endWhen End date/time, in RFC 3339 format
+     * @param projection Array of desired column names
+     * @return Cursor with instances (caller should close when done)
+     */
+    private Cursor getInstances(String timeZone, String startWhen, String endWhen,
+            String[] projection) {
+        Time startTime = new Time(timeZone);
+        startTime.parse3339(startWhen);
+        long startMillis = startTime.toMillis(false);
+
+        Time endTime = new Time(timeZone);
+        endTime.parse3339(endWhen);
+        long endMillis = endTime.toMillis(false);
+
+        // We want a list of instances that occur between the specified dates.
+        Uri uri = Uri.withAppendedPath(CalendarContract.Instances.CONTENT_URI,
+                startMillis + "/" + endMillis);
+
+        Cursor instances = mContentResolver.query(uri, projection, null, null,
+                projection[0] + " ASC");
+
+        return instances;
+    }
+
+    /** debug -- dump instances cursor */
+    private static void dumpInstances(Cursor instances, String timeZone, String msg) {
+        Log.d(TAG, "Instances (" + msg + ")");
+
+        int posn = instances.getPosition();
+        instances.moveToPosition(-1);
+
+        //Log.d(TAG, "+++ instances has " + instances.getCount() + " rows, " +
+        //        instances.getColumnCount() + " columns");
+        while (instances.moveToNext()) {
+            long beginMil = instances.getLong(0);
+            Time beginT = new Time(timeZone);
+            beginT.set(beginMil);
+            String logMsg = "--> begin=" + beginT.format3339(false) + " (" + beginMil + ")";
+            for (int i = 2; i < instances.getColumnCount(); i++) {
+                logMsg += " [" + instances.getString(i) + "]";
+            }
+            Log.d(TAG, logMsg);
+        }
+        instances.moveToPosition(posn);
+    }
+
+
+    /**
+     * Counts the number of instances that appear between the specified start and end times.
+     */
+    private int getInstanceCount(String timeZone, String startWhen, String endWhen) {
+        Cursor instances = getInstances(timeZone, startWhen, endWhen,
+                new String[] { Instances._ID });
+        int count = instances.getCount();
+        instances.close();
+        return count;
+    }
+
+    /**
+     * Deletes an event as app and sync adapter which removes it from the db and
+     * verifies after each.
+     *
+     * @param eventUri The uri for the event to delete
+     * @param accountName TODO
+     */
+    private void removeAndVerifyEvent(Uri eventUri, ContentValues eventValues, String accountName) {
+        // Delete event
+        EventHelper.deleteEvent(mContentResolver, eventUri, eventValues);
+        // Verify
+        verifyEvent(eventValues, ContentUris.parseId(eventUri));
+        // Delete as sync adapter
+        assertEquals(1,
+                EventHelper.deleteEventAsSyncAdapter(mContentResolver, eventUri, accountName));
+        // Verify
+        Cursor c = EventHelper.getEventByUri(mContentResolver, eventUri);
+        assertEquals(0, c.getCount());
+        c.close();
+    }
+
+    /**
+     * Creates an event on the given calendar and verifies it.
+     *
+     * @param account
+     * @param seed
+     * @param calendarId
+     * @param asSyncAdapter
+     * @param values optional pre created set of values; will have several new entries added
+     * @return the _id for the new event
+     */
+    private long createAndVerifyEvent(String account, int seed, long calendarId,
+            boolean asSyncAdapter, ContentValues values) {
+        // Create an event
+        if (values == null) {
+            values = EventHelper.getNewEventValues(account, seed, calendarId, asSyncAdapter);
+        }
+        Uri insertUri = Events.CONTENT_URI;
+        if (asSyncAdapter) {
+            insertUri = asSyncAdapter(insertUri, account, CTS_TEST_TYPE);
+        }
+        Uri uri = mContentResolver.insert(insertUri, values);
+
+        // Verify
+        EventHelper.addDefaultReadOnlyValues(values, account, asSyncAdapter);
+        long eventId = ContentUris.parseId(uri);
+        assertTrue(eventId >= 0);
+
+        verifyEvent(values, eventId);
+        return eventId;
+    }
+
+    /**
+     * Updates an event, and verifies that the updates took.
+     */
+    private void updateAndVerifyEvent(String account, long calendarId, long eventId,
+            boolean asSyncAdapter, ContentValues updateValues) {
+        Uri uri = Uri.withAppendedPath(Events.CONTENT_URI, String.valueOf(eventId));
+        if (asSyncAdapter) {
+            uri = asSyncAdapter(uri, account, CTS_TEST_TYPE);
+        }
+        int count = mContentResolver.update(uri, updateValues, null, null);
+
+        // Verify
+        assertEquals(1, count);
+        verifyEvent(updateValues, eventId);
+    }
+
+    /**
+     * Creates an exception to a recurring event, and verifies it.
+     * @param account The account to use.
+     * @param originalEventId The ID of the original event.
+     * @param values Values for the exception; must include originalInstanceTime.
+     * @return The _id for the new event.
+     */
+    private long createAndVerifyException(String account, long originalEventId,
+            ContentValues values, boolean asSyncAdapter) {
+        // Create the exception
+        Uri uri = Uri.withAppendedPath(Events.CONTENT_EXCEPTION_URI,
+                String.valueOf(originalEventId));
+        if (asSyncAdapter) {
+            uri = asSyncAdapter(uri, account, CTS_TEST_TYPE);
+        }
+        Uri resultUri = mContentResolver.insert(uri, values);
+        assertNotNull(resultUri);
+        long eventId = ContentUris.parseId(resultUri);
+        assertTrue(eventId >= 0);
+        return eventId;
+    }
+
+    /**
+     * Deletes an exception to a recurring event.
+     * @param account The account to use.
+     * @param eventId The ID of the original recurring event.
+     * @param excepId The ID of the exception event.
+     * @return The number of rows deleted.
+     */
+    private int deleteException(String account, long eventId, long excepId) {
+        Uri uri = Uri.withAppendedPath(Events.CONTENT_EXCEPTION_URI,
+                eventId + "/" + excepId);
+        uri = asSyncAdapter(uri, account, CTS_TEST_TYPE);
+        return mContentResolver.delete(uri, null, null);
+    }
+
+    /**
+     * Add some attendees to an event.
+     */
+    private void addAttendees(String account, long eventId, int seed) {
+
+        assertTrue(eventId >= 0);
+        Uri syncUri = asSyncAdapter(Attendees.CONTENT_URI, account, CTS_TEST_TYPE);
+
+        ContentValues values = new ContentValues();
+        values.put(Attendees.EVENT_ID, eventId);
+        values.put(Attendees.ATTENDEE_NAME, "Attender" + seed);
+        values.put(Attendees.ATTENDEE_EMAIL, CalendarHelper.generateCalendarOwnerEmail(account));
+        values.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_ACCEPTED);
+        values.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_ORGANIZER);
+        values.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_NONE);
+        Uri uri = mContentResolver.insert(syncUri, values);
+        seed++;
+
+        values = new ContentValues();
+        values.put(Attendees.EVENT_ID, eventId);
+        values.put(Attendees.ATTENDEE_NAME, "Attender" + seed);
+        values.put(Attendees.ATTENDEE_EMAIL, "attender" + seed + "@example.com");
+        values.put(Attendees.ATTENDEE_STATUS, Attendees.ATTENDEE_STATUS_TENTATIVE);
+        values.put(Attendees.ATTENDEE_RELATIONSHIP, Attendees.RELATIONSHIP_NONE);
+        values.put(Attendees.ATTENDEE_TYPE, Attendees.TYPE_NONE);
+        uri = mContentResolver.insert(syncUri, values);
+    }
+
+    /**
+     * Add some reminders to an event.
+     */
+    private void addReminders(String account, long eventId, int seed) {
+        ContentValues values = new ContentValues();
+
+        values.put(Reminders.EVENT_ID, eventId);
+        values.put(Reminders.MINUTES, seed * 5);
+        values.put(Reminders.METHOD, Reminders.METHOD_ALERT);
+
+        Uri syncUri = asSyncAdapter(Reminders.CONTENT_URI, account, CTS_TEST_TYPE);
+        Uri uri = mContentResolver.insert(syncUri, values);
+    }
+
+    /**
+     * Creates and removes an event that covers a specific range of dates.  Call this to
+     * cause the provider to expand the CalendarMetaData min/max values to include the range.
+     * Useful when you want to see the provider expand the instances as the events are added.
+     */
+    private void expandInstanceRange(String account, long calendarId, String testStart,
+            String testEnd, String timeZone) {
+        int seed = 0;
+
+        // TODO: this should use an UNTIL rule based on testEnd, not a COUNT
+        ContentValues eventValues = EventHelper.getNewRecurringEventValues(account, seed,
+                calendarId, true, testStart, "PT1H", "FREQ=DAILY;WKST=SU;COUNT=100");
+
+        /*
+         * Some of the helper functions modify "eventValues", so we want to make sure we're
+         * passing a copy of anything we want to re-use.
+         */
+        long eventId = createAndVerifyEvent(account, seed, calendarId, true,
+                new ContentValues(eventValues));
+        assertTrue(eventId >= 0);
+
+        String[] projection = { Instances.BEGIN, Instances.START_MINUTE };
+        Cursor instances = getInstances(timeZone, testStart, testEnd, projection);
+        if (DEBUG_RECURRENCE) {
+            dumpInstances(instances, timeZone, "prep-create");
+        }
+        assertEquals("initial recurrence instance count", 3, instances.getCount());
+        instances.close();
+
+        Uri eventUri = ContentUris.withAppendedId(Events.CONTENT_URI, eventId);
+        removeAndVerifyEvent(eventUri, new ContentValues(eventValues), account);
+
+        instances = getInstances(timeZone, testStart, testEnd, projection);
+        if (DEBUG_RECURRENCE) {
+            dumpInstances(instances, timeZone, "prep-clear");
+        }
+        assertEquals("initial recurrence instance count", 0, instances.getCount());
+        instances.close();
+
+    }
+
+    /**
+     * Inserts a new calendar with the given account and seed and verifies it.
+     *
+     * @param account The account to add the calendar to
+     * @param seed A number to use to generate the values
+     * @return the created calendar's id
+     */
+    private long createAndVerifyCalendar(String account, int seed, ContentValues values) {
+        // Create a calendar
+        if (values == null) {
+            values = CalendarHelper.getNewCalendarValues(account, seed);
+        }
+        Uri syncUri = asSyncAdapter(Calendars.CONTENT_URI, account, CTS_TEST_TYPE);
+        Uri uri = mContentResolver.insert(syncUri, values);
+        long calendarId = ContentUris.parseId(uri);
+        assertTrue(calendarId >= 0);
+
+        verifyCalendar(account, values, calendarId);
+        return calendarId;
+    }
+
+    /**
+     * Deletes a given calendar and verifies no calendars remain on that
+     * account.
+     *
+     * @param account
+     * @param id
+     */
+    private void removeAndVerifyCalendar(String account, long id) {
+        // TODO Add code to delete as app and sync adapter and test both
+
+        // Delete
+        assertEquals(1, CalendarHelper.deleteCalendarById(mContentResolver, id));
+
+        // Verify
+        Cursor c = CalendarHelper.getCalendarsByAccount(mContentResolver, account);
+        assertEquals(0, c.getCount());
+        c.close();
+    }
+
+    /**
+     * Check all the fields of a calendar contained in values + id. This assumes
+     * a single calendar has been created on the given account.
+     *
+     * @param account the account of the calendar
+     * @param values the values to check against the db
+     * @param id the _id of the calendar
+     */
+    private void verifyCalendar(String account, ContentValues values, long id) {
+        // Verify
+        Cursor c = CalendarHelper.getCalendarsByAccount(mContentResolver, account);
+        assertEquals(1, c.getCount());
+        assertTrue(c.moveToFirst());
+        assertEquals(id, c.getLong(0));
+        for (String key : values.keySet()) {
+            int index = c.getColumnIndex(key);
+            assertEquals(key, values.getAsString(key), c.getString(index));
+        }
+        c.close();
+    }
+}
diff --git a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_AlbumsTest.java b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_AlbumsTest.java
index 98792e7..00bb47d 100644
--- a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_AlbumsTest.java
+++ b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_AlbumsTest.java
@@ -96,7 +96,8 @@
                     null);
             assertEquals(1, c.getCount());
             c.moveToFirst();
-            assertTrue(c.getLong(c.getColumnIndex(Albums._ID)) > 0);
+            long id = c.getLong(c.getColumnIndex(Albums._ID));
+            assertTrue(id > 0);
             assertEquals(Audio1.ALBUM, c.getString(c.getColumnIndex(Albums.ALBUM)));
             assertNull(c.getString(c.getColumnIndex(Albums.ALBUM_ART)));
             assertNotNull(c.getString(c.getColumnIndex(Albums.ALBUM_KEY)));
@@ -140,6 +141,20 @@
                 // expected
             }
 
+            // test filtering
+            Uri filterUri = audioAlbumsUri.buildUpon()
+                .appendQueryParameter("filter", Audio1.ARTIST).build();
+            c = mContentResolver.query(filterUri, null, null, null, null);
+            assertEquals(1, c.getCount());
+            c.moveToFirst();
+            long fid = c.getLong(c.getColumnIndex(Albums._ID));
+            assertTrue(id == fid);
+            c.close();
+
+            filterUri = audioAlbumsUri.buildUpon().appendQueryParameter("filter", "xyzfoo").build();
+            c = mContentResolver.query(filterUri, null, null, null, null);
+            assertEquals(0, c.getCount());
+            c.close();
         } finally {
             mContentResolver.delete(audioMediaUri, null, null);
         }
diff --git a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_ArtistsTest.java b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_ArtistsTest.java
index 917aa3d..a7ef2d19 100644
--- a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_ArtistsTest.java
+++ b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_ArtistsTest.java
@@ -91,7 +91,8 @@
             c.moveToFirst();
 
             assertEquals(Audio1.ARTIST, c.getString(c.getColumnIndex(Artists.ARTIST)));
-            assertTrue(c.getLong(c.getColumnIndex(Artists._ID)) > 0);
+            long id = c.getLong(c.getColumnIndex(Artists._ID));
+            assertTrue(id > 0);
             assertNotNull(c.getString(c.getColumnIndex(Artists.ARTIST_KEY)));
             assertEquals(1, c.getInt(c.getColumnIndex(Artists.NUMBER_OF_ALBUMS)));
             assertEquals(1, c.getInt(c.getColumnIndex(Artists.NUMBER_OF_TRACKS)));
@@ -114,6 +115,21 @@
             } catch (UnsupportedOperationException e) {
                 // expected
             }
+
+            // test filtering
+            Uri filterUri = artistsUri.buildUpon()
+                .appendQueryParameter("filter", Audio1.ARTIST).build();
+            c = mContentResolver.query(filterUri, null, null, null, null);
+            assertEquals(1, c.getCount());
+            c.moveToFirst();
+            long fid = c.getLong(c.getColumnIndex(Artists._ID));
+            assertTrue(id == fid);
+            c.close();
+
+            filterUri = artistsUri.buildUpon().appendQueryParameter("filter", "xyzfoo").build();
+            c = mContentResolver.query(filterUri, null, null, null, null);
+            assertEquals(0, c.getCount());
+            c.close();
         } finally {
             mContentResolver.delete(uri, null, null);
         }
diff --git a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Genres_MembersTest.java b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Genres_MembersTest.java
index 66ac599..aa364b4 100644
--- a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Genres_MembersTest.java
+++ b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Genres_MembersTest.java
@@ -95,8 +95,6 @@
                 null));
     }
 
-    @ToBeFixed(bug = "", explanation = "The result cursor of query for all columns does not "
-            + "contain the column Members.ALBUM_ART, Members.GENRE_ID and  Members.AUDIO_ID.")
     public void testStoreAudioGenresMembersExternal() {
         ContentValues values = new ContentValues();
         values.put(Genres.NAME, Audio1.GENRE);
@@ -105,8 +103,12 @@
         c.moveToFirst();
 
         long genreId = c.getLong(c.getColumnIndex(Genres._ID));
+        long genre2Id = -1; // used later
         c.close();
 
+        // verify that the Uri has the correct format and genre value
+        assertEquals(uri.toString(), "content://media/external/audio/genres/" + genreId);
+
         // insert audio as the member of the genre
         values.clear();
         values.put(Members.AUDIO_ID, mAudioIdOfJam);
@@ -115,36 +117,15 @@
         assertNotNull(mContentResolver.insert(membersUri, values));
 
         try {
-            // query
+            // query, slow path
             c = mContentResolver.query(membersUri, null, null, null, null);
-            // the ALBUM_ART column does not exist
-            try {
-                c.getColumnIndexOrThrow(Members.ALBUM_ART);
-                fail("Should throw IllegalArgumentException because there is no column with name"
-                        + " \"Members.ALBUM_ART\" in the table");
-            } catch (IllegalArgumentException e) {
-                // expected
-            }
-
-            try {
-                c.getColumnIndexOrThrow(Members.AUDIO_ID);
-                fail("Should throw IllegalArgumentException because there is no column with name"
-                        + " \"Members.AUDIO_ID\" in the table");
-            } catch (IllegalArgumentException e) {
-                // expected
-            }
-
-            try {
-                c.getColumnIndexOrThrow(Members.GENRE_ID);
-                fail("Should throw IllegalArgumentException because there is no column with name"
-                        + " \"Members.GENRE_ID\" in the table");
-            } catch (IllegalArgumentException e) {
-                // expected
-            }
 
             assertEquals(1, c.getCount());
             c.moveToFirst();
-            assertTrue(c.getLong(c.getColumnIndex(Members._ID)) > 0);
+
+            assertEquals(mAudioIdOfJam, c.getLong(c.getColumnIndex(Members.AUDIO_ID)));
+            assertEquals(genreId, c.getLong(c.getColumnIndex(Members.GENRE_ID)));
+            assertEquals(mAudioIdOfJam, c.getLong(c.getColumnIndex(Members._ID)));
             assertEquals(Audio1.EXTERNAL_DATA, c.getString(c.getColumnIndex(Members.DATA)));
             assertTrue(c.getLong(c.getColumnIndex(Members.DATE_ADDED)) > 0);
             assertEquals(Audio1.DATE_MODIFIED, c.getLong(c.getColumnIndex(Members.DATE_MODIFIED)));
@@ -153,6 +134,7 @@
             assertEquals(Audio1.SIZE, c.getInt(c.getColumnIndex(Members.SIZE)));
             assertEquals(Audio1.TITLE, c.getString(c.getColumnIndex(Members.TITLE)));
             assertEquals(Audio1.ALBUM, c.getString(c.getColumnIndex(Members.ALBUM)));
+            assertEquals(Audio1.IS_DRM, c.getInt(c.getColumnIndex(Members.IS_DRM)));
             String albumKey = c.getString(c.getColumnIndex(Members.ALBUM_KEY));
             assertNotNull(albumKey);
             long albumId = c.getLong(c.getColumnIndex(Members.ALBUM_ID));
@@ -175,6 +157,89 @@
             assertNotNull(titleKey);
             c.close();
 
+            // query again, fast path
+            c = mContentResolver.query(membersUri,
+                    new String[] { Members.AUDIO_ID, Members.GENRE_ID},
+                    null, null, null);
+            assertEquals(1, c.getCount());
+            c.moveToFirst();
+            assertEquals(mAudioIdOfJam, c.getLong(c.getColumnIndex(Members.AUDIO_ID)));
+            assertEquals(genreId, c.getLong(c.getColumnIndex(Members.GENRE_ID)));
+            c.close();
+
+            // Query with a constraint on _id. Note that _id corresponds to the _id
+            // column in the audio table, not the one in the audio_genres_map table.
+            // We need to preserve this behavior for backward compatibility.
+            c = mContentResolver.query(membersUri, null,
+                    Members._ID + "=?", new String[] {Long.toString(mAudioIdOfJam)}, null);
+            assertEquals(1, c.getCount());
+            c.moveToFirst();
+            assertEquals(mAudioIdOfJam, c.getLong(c.getColumnIndex(Members._ID)));
+            c.close();
+
+            // Query members across all genres
+            Uri allMembersUri = Uri.parse("content://media/external/audio/genres/all/members");
+            c = mContentResolver.query(allMembersUri, null, null, null, null);
+            int colidx = c.getColumnIndex(Members.AUDIO_ID);
+            int jamcnt = 0;
+            // The song should appear only once, for the genre we used when inserting it
+            while(c.moveToNext()) {
+                if (c.getLong(colidx) == mAudioIdOfJam) {
+                    jamcnt++;
+                    assertEquals(genreId, c.getLong(c.getColumnIndex(Members.GENRE_ID)));
+                }
+            }
+            assertEquals(1, jamcnt);
+            c.close();
+
+            // Query the same Uri, but add a where clause to restrict it to the one entry we added
+            c = mContentResolver.query(allMembersUri, null,
+                    Members.AUDIO_ID + "=?", new String[] {Long.toString(mAudioIdOfJam)}, null);
+            assertEquals(1, c.getCount());
+            c.moveToFirst();
+            assertEquals(genreId, c.getLong(c.getColumnIndex(Members.GENRE_ID)));
+            assertEquals(mAudioIdOfJam, c.getLong(c.getColumnIndex(Members.AUDIO_ID)));
+            c.close();
+
+            // create another genre
+            values.clear();
+            values.put(Genres.NAME, Audio1.GENRE + "-2");
+            uri = mContentResolver.insert(Genres.EXTERNAL_CONTENT_URI, values);
+            c = mContentResolver.query(uri, null, null, null, null);
+            c.moveToFirst();
+            genre2Id = c.getLong(c.getColumnIndex(Genres._ID));
+            c.close();
+
+            // insert the song into the second genre
+            values.clear();
+            values.put(Members.AUDIO_ID, mAudioIdOfJam);
+            Uri members2Uri = Members.getContentUri(MediaStoreAudioTestHelper.EXTERNAL_VOLUME_NAME,
+                genre2Id);
+            assertNotNull(mContentResolver.insert(members2Uri, values));
+
+            // Query members across all genres again
+            c = mContentResolver.query(allMembersUri, null, null, null, null);
+            colidx = c.getColumnIndex(Members.AUDIO_ID);
+            int jamcnt1 = 0;
+            int jamcnt2 = 0;
+            // This time the song should appear twice, once for each genre
+            while(c.moveToNext()) {
+                if (c.getLong(colidx) == mAudioIdOfJam) {
+                    long g = c.getLong(c.getColumnIndex(Members.GENRE_ID));
+                    if (g == genreId) {
+                        jamcnt1++;
+                    } else if (g == genre2Id) {
+                        jamcnt2++;
+                    } else {
+                        fail("wrong genre found");
+                    }
+                }
+            }
+            assertEquals(1, jamcnt1);
+            assertEquals(1, jamcnt2);
+            c.close();
+
+
             // update the member
             values.clear();
             values.put(Members.AUDIO_ID, mAudioIdOfJamLive);
@@ -186,17 +251,20 @@
                 // expected
             }
 
-            // delete the member
-            try {
-                mContentResolver.delete(membersUri, null, null);
-                fail("Should throw SQLException because there is no column with name "
-                        + "\"Members.GENRE_ID\" in the table");
-            } catch (SQLException e) {
-                // expected
-            }
+            // Delete the members, note that this does not delete the genre itself
+            assertEquals(1, mContentResolver.delete(membersUri, null, null)); // check number of rows deleted
+
+            // verify the genre is now empty
+            c = mContentResolver.query(membersUri, null, null, null, null);
+            assertEquals(0, c.getCount());
+            c.close();
+
         } finally {
             // the members are deleted when deleting the genre which they belong to
             mContentResolver.delete(Genres.EXTERNAL_CONTENT_URI, Genres._ID + "=" + genreId, null);
+            if (genre2Id >= 0) {
+                mContentResolver.delete(Genres.EXTERNAL_CONTENT_URI, Genres._ID + "=" + genre2Id, null);
+            }
             c = mContentResolver.query(membersUri, null, null, null, null);
             assertEquals(0, c.getCount());
             c.close();
diff --git a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_MediaTest.java b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_MediaTest.java
index 29b270e..a964f64 100644
--- a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_MediaTest.java
+++ b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_MediaTest.java
@@ -76,12 +76,10 @@
                 null, null));
     }
 
-    @ToBeFixed(bug = "", explanation = "The column Media.ALBUM_ART does not exist.")
     public void testStoreAudioMediaInternal() {
         testStoreAudioMedia(true);
     }
 
-    @ToBeFixed(bug = "", explanation = "The column Media.ALBUM_ART does not exist.")
     public void testStoreAudioMediaExternal() {
         testStoreAudioMedia(false);
     }
@@ -102,11 +100,13 @@
             Cursor c = mContentResolver.query(uri, null, null, null, null);
             assertEquals(1, c.getCount());
             c.moveToFirst();
-            assertTrue(c.getLong(c.getColumnIndex(Media._ID)) > 0);
+            long id = c.getLong(c.getColumnIndex(Media._ID));
+            assertTrue(id > 0);
             String expected = isInternal ? Audio1.INTERNAL_DATA : Audio1.EXTERNAL_DATA;
             assertEquals(expected, c.getString(c.getColumnIndex(Media.DATA)));
             assertTrue(c.getLong(c.getColumnIndex(Media.DATE_ADDED)) > 0);
             assertEquals(Audio1.DATE_MODIFIED, c.getLong(c.getColumnIndex(Media.DATE_MODIFIED)));
+            assertEquals(Audio1.IS_DRM, c.getInt(c.getColumnIndex(Media.IS_DRM)));
             assertEquals(Audio1.FILE_NAME, c.getString(c.getColumnIndex(Media.DISPLAY_NAME)));
             assertEquals(Audio1.MIME_TYPE, c.getString(c.getColumnIndex(Media.MIME_TYPE)));
             assertEquals(Audio1.SIZE, c.getInt(c.getColumnIndex(Media.SIZE)));
@@ -131,14 +131,6 @@
             assertEquals(Audio1.YEAR, c.getInt(c.getColumnIndex(Media.YEAR)));
             String titleKey = c.getString(c.getColumnIndex(Media.TITLE_KEY));
             assertNotNull(titleKey);
-            // the ALBUM_ART column does not exist
-            try {
-                c.getColumnIndexOrThrow(Media.ALBUM_ART);
-                fail("Should throw IllegalArgumentException because there is no column with name"
-                        + " \"Media.ALBUM_ART\" in the table");
-            } catch (IllegalArgumentException e) {
-                // expected
-            }
             c.close();
 
             // update
@@ -151,9 +143,12 @@
             c = mContentResolver.query(uri, null, null, null, null);
             assertEquals(1, c.getCount());
             c.moveToFirst();
+            long id2 = c.getLong(c.getColumnIndex(Media._ID));
+            assertTrue(id == id2);
             expected = isInternal ? Audio2.INTERNAL_DATA : Audio2.EXTERNAL_DATA;
             assertEquals(expected, c.getString(c.getColumnIndex(Media.DATA)));
             assertEquals(Audio2.DATE_MODIFIED, c.getLong(c.getColumnIndex(Media.DATE_MODIFIED)));
+            assertEquals(Audio2.IS_DRM, c.getInt(c.getColumnIndex(Media.IS_DRM)));
             assertEquals(Audio2.DISPLAY_NAME, c.getString(c.getColumnIndex(Media.DISPLAY_NAME)));
             assertEquals(Audio2.MIME_TYPE, c.getString(c.getColumnIndex(Media.MIME_TYPE)));
             assertEquals(Audio2.SIZE, c.getInt(c.getColumnIndex(Media.SIZE)));
@@ -175,6 +170,22 @@
             assertEquals(Audio2.YEAR, c.getInt(c.getColumnIndex(Media.YEAR)));
             assertTrue(titleKey.equals(c.getString(c.getColumnIndex(Media.TITLE_KEY))));
             c.close();
+
+            // test filtering
+            Uri baseUri = isInternal ? Media.INTERNAL_CONTENT_URI : Media.EXTERNAL_CONTENT_URI;
+            Uri filterUri = baseUri.buildUpon()
+                .appendQueryParameter("filter", Audio2.ARTIST).build();
+            c = mContentResolver.query(filterUri, null, null, null, null);
+            assertEquals(1, c.getCount());
+            c.moveToFirst();
+            long fid = c.getLong(c.getColumnIndex(Media._ID));
+            assertTrue(id == fid);
+            c.close();
+
+            filterUri = baseUri.buildUpon().appendQueryParameter("filter", "xyzfoo").build();
+            c = mContentResolver.query(filterUri, null, null, null, null);
+            assertEquals(0, c.getCount());
+            c.close();
         } finally {
             // delete
             int result = mContentResolver.delete(uri, null, null);
diff --git a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Playlists_MembersTest.java b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Playlists_MembersTest.java
index 36d4303..62aa208 100644
--- a/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Playlists_MembersTest.java
+++ b/tests/tests/provider/src/android/provider/cts/MediaStore_Audio_Playlists_MembersTest.java
@@ -24,6 +24,7 @@
 import android.content.ContentValues;
 import android.database.Cursor;
 import android.net.Uri;
+import android.provider.MediaStore;
 import android.provider.MediaStore.Audio.Media;
 import android.provider.MediaStore.Audio.Playlists;
 import android.provider.MediaStore.Audio.Playlists.Members;
@@ -50,6 +51,7 @@
             Members.DISPLAY_NAME,
             Members.DURATION,
             Members.IS_ALARM,
+            Members.IS_DRM,
             Members.IS_MUSIC,
             Members.IS_NOTIFICATION,
             Members.IS_RINGTONE,
@@ -79,6 +81,7 @@
             Members.DISPLAY_NAME,
             Members.DURATION,
             Members.IS_ALARM,
+            Members.IS_DRM,
             Members.IS_MUSIC,
             Members.IS_NOTIFICATION,
             Members.IS_RINGTONE,
@@ -147,6 +150,10 @@
         Cursor c = mContentResolver.query(uri, null, null, null, null);
         c.moveToFirst();
         long playlistId = c.getLong(c.getColumnIndex(Playlists._ID));
+        long playlist2Id = -1; // used later
+
+        // verify that the Uri has the correct format and playlist value
+        assertEquals(uri.toString(), "content://media/external/audio/playlists/" + playlistId);
 
         // insert audio as the member of the playlist
         values.clear();
@@ -169,6 +176,7 @@
             assertEquals(Audio1.EXTERNAL_DATA, c.getString(c.getColumnIndex(Members.DATA)));
             assertTrue(c.getLong(c.getColumnIndex(Members.DATE_ADDED)) > 0);
             assertEquals(Audio1.DATE_MODIFIED, c.getLong(c.getColumnIndex(Members.DATE_MODIFIED)));
+            assertEquals(Audio1.IS_DRM, c.getInt(c.getColumnIndex(Members.IS_DRM)));
             assertEquals(Audio1.FILE_NAME, c.getString(c.getColumnIndex(Members.DISPLAY_NAME)));
             assertEquals(Audio1.MIME_TYPE, c.getString(c.getColumnIndex(Members.MIME_TYPE)));
             assertEquals(Audio1.SIZE, c.getInt(c.getColumnIndex(Members.SIZE)));
@@ -217,6 +225,7 @@
             assertEquals(Audio2.EXTERNAL_DATA, c.getString(c.getColumnIndex(Members.DATA)));
             assertTrue(c.getLong(c.getColumnIndex(Members.DATE_ADDED)) > 0);
             assertEquals(Audio2.DATE_MODIFIED, c.getLong(c.getColumnIndex(Members.DATE_MODIFIED)));
+            assertEquals(Audio2.IS_DRM, c.getInt(c.getColumnIndex(Members.IS_DRM)));
             assertEquals(Audio2.FILE_NAME, c.getString(c.getColumnIndex(Members.DISPLAY_NAME)));
             assertEquals(Audio2.MIME_TYPE, c.getString(c.getColumnIndex(Members.MIME_TYPE)));
             assertEquals(Audio2.SIZE, c.getInt(c.getColumnIndex(Members.SIZE)));
@@ -239,13 +248,117 @@
             assertNotNull(c.getString(c.getColumnIndex(Members.TITLE_KEY)));
             c.close();
 
-            // delete the member
+            // update the member back to its original state
+            values.clear();
+            values.put(Members.PLAY_ORDER, 1);
+            values.put(Members.AUDIO_ID, mIdOfAudio1);
+            result = mContentResolver.update(membersUri, values, Members.AUDIO_ID + "="
+                    + mIdOfAudio2, null);
+            assertEquals(1, result);
+
+            // insert another member into the playlist
+            values.clear();
+            values.put(Members.AUDIO_ID, mIdOfAudio2);
+            values.put(Members.PLAY_ORDER, 2);
+            Uri audioUri2 = mContentResolver.insert(membersUri, values);
+            // the playlist should now have id1 at position 1 and id2 at position2, check that
+            c = mContentResolver.query(membersUri, new String[] { Members.AUDIO_ID, Members.PLAY_ORDER }, null, null, Members.PLAY_ORDER);
+            assertEquals(2, c.getCount());
+            c.moveToFirst();
+            assertEquals(mIdOfAudio1, c.getInt(c.getColumnIndex(Members.AUDIO_ID)));
+            assertEquals(1, c.getInt(c.getColumnIndex(Members.PLAY_ORDER)));
+            c.moveToNext();
+            assertEquals(mIdOfAudio2, c.getInt(c.getColumnIndex(Members.AUDIO_ID)));
+            assertEquals(2, c.getInt(c.getColumnIndex(Members.PLAY_ORDER)));
+            c.close();
+
+            // swap the items around
+            assertTrue(MediaStore.Audio.Playlists.Members.moveItem(mContentResolver, playlistId, 2, 1));
+
+            // check the new positions
+            c = mContentResolver.query(membersUri, new String[] { Members.AUDIO_ID, Members.PLAY_ORDER }, null, null, Members.PLAY_ORDER);
+            assertEquals(2, c.getCount());
+            c.moveToFirst();
+            assertEquals(mIdOfAudio2, c.getInt(c.getColumnIndex(Members.AUDIO_ID)));
+            assertEquals(1, c.getInt(c.getColumnIndex(Members.PLAY_ORDER)));
+            c.moveToNext();
+            assertEquals(mIdOfAudio1, c.getInt(c.getColumnIndex(Members.AUDIO_ID)));
+            assertEquals(2, c.getInt(c.getColumnIndex(Members.PLAY_ORDER)));
+            c.close();
+
+            // swap the items around in the other direction
+            assertTrue(MediaStore.Audio.Playlists.Members.moveItem(mContentResolver, playlistId, 1, 2));
+
+            // check the positions again
+            c = mContentResolver.query(membersUri, new String[] { Members.AUDIO_ID, Members.PLAY_ORDER }, null, null, Members.PLAY_ORDER);
+            assertEquals(2, c.getCount());
+            c.moveToFirst();
+            assertEquals(mIdOfAudio1, c.getLong(c.getColumnIndex(Members.AUDIO_ID)));
+            assertEquals(1, c.getInt(c.getColumnIndex(Members.PLAY_ORDER)));
+            c.moveToNext();
+            assertEquals(mIdOfAudio2, c.getLong(c.getColumnIndex(Members.AUDIO_ID)));
+            assertEquals(2, c.getInt(c.getColumnIndex(Members.PLAY_ORDER)));
+            c.close();
+
+            // create another playlist
+            values.clear();
+            values.put(Playlists.NAME, "My favourites 2");
+            values.put(Playlists.DATA, "");
+            values.put(Playlists.DATE_ADDED, dateAdded);
+            values.put(Playlists.DATE_MODIFIED, dateModified);
+            // insert
+            uri = mContentResolver.insert(Playlists.EXTERNAL_CONTENT_URI, values);
+            assertNotNull(uri);
+            c = mContentResolver.query(uri, null, null, null, null);
+            c.moveToFirst();
+            playlist2Id = c.getLong(c.getColumnIndex(Playlists._ID));
+            c.close();
+
+            // insert audio into 2nd playlist
+            values.clear();
+            values.put(Members.AUDIO_ID, mIdOfAudio1);
+            values.put(Members.PLAY_ORDER, 1);
+            Uri members2Uri = Members.getContentUri(MediaStoreAudioTestHelper.EXTERNAL_VOLUME_NAME,
+                    playlist2Id);
+            Uri audio2Uri = mContentResolver.insert(members2Uri, values);
+
+            // check that the audio exists in both playlist
+            c = mContentResolver.query(membersUri, null, null, null, null);
+            assertEquals(2, c.getCount());
+            int cnt = 0;
+            int colidx = c.getColumnIndex(Members.AUDIO_ID);
+            assertTrue(colidx >= 0);
+            while(c.moveToNext()) {
+                if (c.getLong(colidx) == mIdOfAudio1) {
+                    cnt++;
+                }
+            }
+            assertEquals(1, cnt);
+            c.close();
+            c = mContentResolver.query(members2Uri, null, null, null, null);
+            assertEquals(1, c.getCount());
+            cnt = 0;
+            while(c.moveToNext()) {
+                if (c.getLong(colidx) == mIdOfAudio1) {
+                    cnt++;
+                }
+            }
+            assertEquals(1, cnt);
+            c.close();
+
+            // delete the members
             result = mContentResolver.delete(membersUri, null, null);
+            assertEquals(2, result);
+            result = mContentResolver.delete(members2Uri, null, null);
             assertEquals(1, result);
         } finally {
-            // delete the playlist
+            // delete the playlists
             mContentResolver.delete(Playlists.EXTERNAL_CONTENT_URI,
                     Playlists._ID + "=" + playlistId, null);
+            if (playlist2Id >= 0) {
+                mContentResolver.delete(Playlists.EXTERNAL_CONTENT_URI,
+                        Playlists._ID + "=" + playlist2Id, null);
+            }
         }
     }
 
diff --git a/tests/tests/provider/src/android/provider/cts/MediaStore_Images_MediaTest.java b/tests/tests/provider/src/android/provider/cts/MediaStore_Images_MediaTest.java
index a8b14bc..8e8d650 100644
--- a/tests/tests/provider/src/android/provider/cts/MediaStore_Images_MediaTest.java
+++ b/tests/tests/provider/src/android/provider/cts/MediaStore_Images_MediaTest.java
@@ -273,8 +273,7 @@
         values.put(Media.TITLE, "testimage");
         long dateAdded = System.currentTimeMillis() / 1000;
         values.put(Media.DATE_ADDED, dateAdded);
-        File externalFile = new File(externalPath);
-        long dateModified = externalFile.lastModified() / 1000;
+        long dateModified = System.currentTimeMillis() / 1000;
         values.put(Media.DATE_MODIFIED, dateModified);
 
         // insert
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/AllocationTest.java b/tests/tests/renderscript/src/android/renderscript/cts/AllocationTest.java
index b6afb70..722274d 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/AllocationTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/AllocationTest.java
@@ -216,7 +216,7 @@
         }
 
         try {
-            int invalidUsage = 0x0010;
+            int invalidUsage = 0x0020;
             Allocation.createFromBitmap(mRS, B,
                 Allocation.MipmapControl.MIPMAP_NONE, invalidUsage);
             fail("should throw RSIllegalArgumentException.");
@@ -285,83 +285,103 @@
      * Test all copy from/to routines for byte/short/int/float
      */
 
-    void helperFloatCopy(int nElems) {
+    void helperFloatCopy(int nElems, int offset, int count, int copyMode) {
         Allocation A = Allocation.createSized(mRS, Element.F32(mRS), nElems);
 
         float src[], dst[];
         src = new float[nElems];
         dst = new float[nElems];
-        for (int i = 0; i < nElems; i++) {
+        for (int i = 0; i < count; i++) {
             src[i] = (float)i;
-            dst[i] = -1.0f;
+            dst[offset + i] = -1.0f;
         }
 
-        A.copyFrom(src);
+        switch (copyMode) {
+        case 0: A.copyFrom(src); break;
+        case 1: A.copyFromUnchecked(src); break;
+        case 2: A.copy1DRangeFrom(offset, count, src); break;
+        case 3: A.copy1DRangeFromUnchecked(offset, count, src); break;
+        }
         A.copyTo(dst);
 
-        for (int i = 0; i < nElems; i++) {
-            assertEquals(dst[i], src[i]);
+        for (int i = 0; i < count; i++) {
+            assertEquals(dst[offset + i], src[i]);
         }
     }
 
-    void helperByteCopy(int nElems) {
+    void helperByteCopy(int nElems, int offset, int count, int copyMode) {
         Allocation A = Allocation.createSized(mRS, Element.I8(mRS), nElems);
 
         byte src[], dst[];
         src = new byte[nElems];
         dst = new byte[nElems];
-        for (int i = 0; i < nElems; i++) {
+        for (int i = 0; i < count; i++) {
             src[i] = (byte)i;
-            dst[i] = -1;
+            dst[offset + i] = -1;
         }
 
-        A.copyFrom(src);
+        switch (copyMode) {
+        case 0: A.copyFrom(src); break;
+        case 1: A.copyFromUnchecked(src); break;
+        case 2: A.copy1DRangeFrom(offset, count, src); break;
+        case 3: A.copy1DRangeFromUnchecked(offset, count, src); break;
+        }
         A.copyTo(dst);
 
-        for (int i = 0; i < nElems; i++) {
-            assertEquals(dst[i], src[i]);
+        for (int i = 0; i < count; i++) {
+            assertEquals(dst[offset + i], src[i]);
         }
     }
 
-    void helperShortCopy(int nElems) {
+    void helperShortCopy(int nElems, int offset, int count, int copyMode) {
         Allocation A = Allocation.createSized(mRS, Element.I16(mRS), nElems);
 
         short src[], dst[];
         src = new short[nElems];
         dst = new short[nElems];
-        for (int i = 0; i < nElems; i++) {
+        for (int i = 0; i < count; i++) {
             src[i] = (short)i;
-            dst[i] = -1;
+            dst[offset + i] = -1;
         }
 
-        A.copyFrom(src);
+        switch (copyMode) {
+        case 0: A.copyFrom(src); break;
+        case 1: A.copyFromUnchecked(src); break;
+        case 2: A.copy1DRangeFrom(offset, count, src); break;
+        case 3: A.copy1DRangeFromUnchecked(offset, count, src); break;
+        }
         A.copyTo(dst);
 
-        for (int i = 0; i < nElems; i++) {
-            assertEquals(dst[i], src[i]);
+        for (int i = 0; i < count; i++) {
+            assertEquals(dst[offset + i], src[i]);
         }
     }
 
-    void helperIntCopy(int nElems) {
+    void helperIntCopy(int nElems, int offset, int count, int copyMode) {
         Allocation A = Allocation.createSized(mRS, Element.I32(mRS), nElems);
 
         int src[], dst[];
         src = new int[nElems];
         dst = new int[nElems];
-        for (int i = 0; i < nElems; i++) {
+        for (int i = 0; i < count; i++) {
             src[i] = i;
-            dst[i] = -1;
+            dst[offset + i] = -1;
         }
 
-        A.copyFrom(src);
+        switch (copyMode) {
+        case 0: A.copyFrom(src); break;
+        case 1: A.copyFromUnchecked(src); break;
+        case 2: A.copy1DRangeFrom(offset, count, src); break;
+        case 3: A.copy1DRangeFromUnchecked(offset, count, src); break;
+        }
         A.copyTo(dst);
 
-        for (int i = 0; i < nElems; i++) {
-            assertEquals(dst[i], src[i]);
+        for (int i = 0; i < count; i++) {
+            assertEquals(dst[offset + i], src[i]);
         }
     }
 
-    void helperBaseObjCopy(int nElems) {
+    void helperBaseObjCopy(int nElems, int offset, int count, int copyMode) {
         Allocation A =
             Allocation.createSized(mRS, Element.ELEMENT(mRS), nElems);
         Element E[] = new Element[nElems];
@@ -400,18 +420,270 @@
         }
     }
 
+    void helperFloatAllocationCopy(int nElems, int offset, int count) {
+
+        Allocation srcA = Allocation.createSized(mRS, Element.F32(mRS), nElems);
+        Allocation dstA = Allocation.createSized(mRS, Element.F32(mRS), nElems);
+
+        float src[], dst[];
+        src = new float[nElems];
+        dst = new float[nElems];
+        for (int i = 0; i < nElems; i++) {
+            src[i] = (float)i;
+            dst[i] = -1.0f;
+        }
+
+        // First populate the source allocation
+        srcA.copyFrom(src);
+        // Now test allocation to allocation copy
+        dstA.copy1DRangeFrom(offset, count, srcA, offset);
+        dstA.copyTo(dst);
+
+        for (int i = 0; i < count; i++) {
+            assertEquals(dst[offset + i], src[offset + i]);
+        }
+    }
+
+    void helperByteAllocationCopy(int nElems, int offset, int count) {
+
+        Allocation srcA = Allocation.createSized(mRS, Element.I8(mRS), nElems);
+        Allocation dstA = Allocation.createSized(mRS, Element.I8(mRS), nElems);
+
+        byte src[], dst[];
+        src = new byte[nElems];
+        dst = new byte[nElems];
+        for (int i = 0; i < nElems; i++) {
+            src[i] = (byte)i;
+            dst[i] = -1;
+        }
+
+        // First populate the source allocation
+        srcA.copyFrom(src);
+        // Now test allocation to allocation copy
+        dstA.copy1DRangeFrom(offset, count, srcA, offset);
+        dstA.copyTo(dst);
+
+        for (int i = 0; i < count; i++) {
+            assertEquals(dst[offset + i], src[offset + i]);
+        }
+    }
+
+    void helperFloatCopy2D(int nElemsX, int nElemsY,
+                           int xOffset, int yOffset,
+                           int width, int height) {
+        Type.Builder b = new Type.Builder(mRS, Element.F32(mRS));
+        Allocation A = Allocation.createTyped(mRS, b.setX(nElemsX).setY(nElemsY).create());
+
+        float src[], dst[];
+        src = new float[width * height];
+        dst = new float[nElemsX * nElemsY];
+        for (int i = width * height - 1; i >= 0; i--) {
+            src[i] = (float)i;
+        }
+        for (int i = nElemsX * nElemsY - 1; i >= 0; i--) {
+            dst[i] = -1.0f;
+        }
+
+        A.copy2DRangeFrom(xOffset, yOffset, width, height, src);
+        A.copyTo(dst);
+
+        int sourceCount = width * height - 1;
+        for (int y = yOffset + height - 1; y >= yOffset ; y--) {
+            for (int x = xOffset + width - 1; x >= xOffset ; x--) {
+                assertEquals(dst[y * nElemsX + x], src[sourceCount--]);
+            }
+        }
+    }
+
+    void helperByteCopy2D(int nElemsX, int nElemsY,
+                           int xOffset, int yOffset,
+                           int width, int height) {
+        Type.Builder b = new Type.Builder(mRS, Element.I8(mRS));
+        Allocation A = Allocation.createTyped(mRS, b.setX(nElemsX).setY(nElemsY).create());
+
+        byte src[], dst[];
+        src = new byte[width * height];
+        dst = new byte[nElemsX * nElemsY];
+        for (int i = width * height - 1; i >= 0; i--) {
+            src[i] = (byte)i;
+        }
+        for (int i = nElemsX * nElemsY - 1; i >= 0; i--) {
+            dst[i] = -1;
+        }
+
+        A.copy2DRangeFrom(xOffset, yOffset, width, height, src);
+        A.copyTo(dst);
+
+        int sourceCount = width * height - 1;
+        for (int y = yOffset + height - 1; y >= yOffset ; y--) {
+            for (int x = xOffset + width - 1; x >= xOffset ; x--) {
+                assertEquals(dst[y * nElemsX + x], src[sourceCount--]);
+            }
+        }
+    }
+
+    void helperShortCopy2D(int nElemsX, int nElemsY,
+                           int xOffset, int yOffset,
+                           int width, int height) {
+        Type.Builder b = new Type.Builder(mRS, Element.I16(mRS));
+        Allocation A = Allocation.createTyped(mRS, b.setX(nElemsX).setY(nElemsY).create());
+
+        short src[], dst[];
+        src = new short[width * height];
+        dst = new short[nElemsX * nElemsY];
+        for (int i = width * height - 1; i >= 0; i--) {
+            src[i] = (short)i;
+        }
+        for (int i = nElemsX * nElemsY - 1; i >= 0; i--) {
+            dst[i] = -1;
+        }
+
+        A.copy2DRangeFrom(xOffset, yOffset, width, height, src);
+        A.copyTo(dst);
+
+        int sourceCount = width * height - 1;
+        for (int y = yOffset + height - 1; y >= yOffset ; y--) {
+            for (int x = xOffset + width - 1; x >= xOffset ; x--) {
+                assertEquals(dst[y * nElemsX + x], src[sourceCount--]);
+            }
+        }
+    }
+
+    void helperIntCopy2D(int nElemsX, int nElemsY,
+                           int xOffset, int yOffset,
+                           int width, int height) {
+        Type.Builder b = new Type.Builder(mRS, Element.I32(mRS));
+        Allocation A = Allocation.createTyped(mRS, b.setX(nElemsX).setY(nElemsY).create());
+
+        int src[], dst[];
+        src = new int[width * height];
+        dst = new int[nElemsX * nElemsY];
+        for (int i = width * height - 1; i >= 0; i--) {
+            src[i] = i;
+        }
+        for (int i = nElemsX * nElemsY - 1; i >= 0; i--) {
+            dst[i] = -1;
+        }
+
+        A.copy2DRangeFrom(xOffset, yOffset, width, height, src);
+        A.copyTo(dst);
+
+        int sourceCount = width * height - 1;
+        for (int y = yOffset + height - 1; y >= yOffset ; y--) {
+            for (int x = xOffset + width - 1; x >= xOffset ; x--) {
+                assertEquals(dst[y * nElemsX + x], src[sourceCount--]);
+            }
+        }
+    }
+
+    void helperFloatAllocationCopy2D(int nElemsX, int nElemsY,
+                           int xOffset, int yOffset,
+                           int width, int height) {
+        Type.Builder b = new Type.Builder(mRS, Element.F32(mRS));
+        Allocation srcA = Allocation.createTyped(mRS, b.setX(nElemsX).setY(nElemsY).create());
+        Allocation dstA = Allocation.createTyped(mRS, b.setX(nElemsX).setY(nElemsY).create());
+
+        float src[], dst[];
+        src = new float[nElemsX * nElemsY];
+        dst = new float[nElemsX * nElemsY];
+        for (int i = nElemsX * nElemsY - 1; i >= 0; i--) {
+            src[i] = (float)i;
+            dst[i] = -1.0f;
+        }
+        srcA.copyFrom(src);
+        dstA.copy2DRangeFrom(xOffset, yOffset, width, height, srcA, xOffset, yOffset);
+        dstA.copyTo(dst);
+
+        int sourceCount = width * height - 1;
+        for (int y = yOffset + height - 1; y >= yOffset ; y--) {
+            for (int x = xOffset + width - 1; x >= xOffset ; x--) {
+                assertEquals(dst[y * nElemsX + x], src[y * nElemsX + x]);
+            }
+        }
+    }
+
+    void helperByteAllocationCopy2D(int nElemsX, int nElemsY,
+                           int xOffset, int yOffset,
+                           int width, int height) {
+        Type.Builder b = new Type.Builder(mRS, Element.I8(mRS));
+        Allocation srcA = Allocation.createTyped(mRS, b.setX(nElemsX).setY(nElemsY).create());
+        Allocation dstA = Allocation.createTyped(mRS, b.setX(nElemsX).setY(nElemsY).create());
+
+        byte src[], dst[];
+        src = new byte[nElemsX * nElemsY];
+        dst = new byte[nElemsX * nElemsY];
+        for (int i = nElemsX * nElemsY - 1; i >= 0; i--) {
+            src[i] = (byte)i;
+            dst[i] = -1;
+        }
+        srcA.copyFrom(src);
+        dstA.copy2DRangeFrom(xOffset, yOffset, width, height, srcA, xOffset, yOffset);
+        dstA.copyTo(dst);
+
+        int sourceCount = width * height - 1;
+        for (int y = yOffset + height - 1; y >= yOffset ; y--) {
+            for (int x = xOffset + width - 1; x >= xOffset ; x--) {
+                assertEquals(dst[y * nElemsX + x], src[y * nElemsX + x]);
+            }
+        }
+    }
+
     static int elemsToTest = 20;
 
-    public void testCopyOperations() {
+    public void test1DCopyOperations() {
         for (int s = 8; s <= elemsToTest; s += 2) {
-            helperFloatCopy(s);
-            helperByteCopy(s);
-            helperShortCopy(s);
-            helperIntCopy(s);
-            helperBaseObjCopy(s);
+            for (int mode = 0; mode <= 1; mode ++) {
+                helperFloatCopy(s, 0, s, mode);
+                helperByteCopy(s, 0, s, mode);
+                helperShortCopy(s, 0, s, mode);
+                helperIntCopy(s, 0, s, mode);
+                helperBaseObjCopy(s, 0, s, mode);
+            }
+
+            // now test copy range
+            for (int mode = 2; mode <= 3; mode ++) {
+                for (int off = 0; off < s; off ++) {
+                    for (int count = 1; count <= s - off; count ++) {
+                        helperFloatCopy(s, off, count, mode);
+                        helperByteCopy(s, off, count, mode);
+                        helperShortCopy(s, off, count, mode);
+                        helperIntCopy(s, off, count, mode);
+                        helperBaseObjCopy(s, off, count, mode);
+                    }
+                }
+            }
+
+            for (int off = 0; off < s; off ++) {
+                for (int count = 1; count <= s - off; count ++) {
+                    helperFloatAllocationCopy(s, off, count);
+                    helperByteAllocationCopy(s, off, count);
+                }
+            }
         }
+
         helperBitmapCopy(bDimX, bDimY);
     }
+
+    public void test2DCopyOperations() {
+        for (int sX = 8; sX <= elemsToTest; sX += 5) {
+            for (int sY = 8; sY <= elemsToTest; sY += 5) {
+                for (int offX = 0; offX < sX; offX += 3) {
+                    for (int offY = 0; offY < sY; offY += 3) {
+                        for (int w = 1; w <= sX - offX; w += 3) {
+                            for (int h = 1; h <= sY - offY; h += 3) {
+                                helperFloatCopy2D(sX, sY, offX, offY, w, h);
+                                helperByteCopy2D(sX, sY, offX, offY, w, h);
+                                helperShortCopy2D(sX, sY, offX, offY, w, h);
+                                helperIntCopy2D(sX, sY, offX, offY, w, h);
+                                helperFloatAllocationCopy2D(sX, sY, offX, offY, w, h);
+                                helperByteAllocationCopy2D(sX, sY, offX, offY, w, h);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
 }
 
 
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/BaseObjTest.java b/tests/tests/renderscript/src/android/renderscript/cts/BaseObjTest.java
new file mode 100644
index 0000000..a079951
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/BaseObjTest.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2011 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 android.renderscript.cts;
+
+import android.renderscript.BaseObj;
+import android.renderscript.Font;
+import android.renderscript.Font.Style;
+import android.renderscript.RSIllegalArgumentException;
+
+public class BaseObjTest extends RSBaseGraphics {
+
+    public void testBaseObj() {
+        Style S = Font.Style.NORMAL;
+        Font F = Font.create(mRS, mRes, "sans-serif", S, 8);
+        assertTrue(F != null);
+        BaseObj B = F;
+        B.setName("sans-serif");
+        try {
+            B.setName("sans-serif");
+            fail("set name twice for a BaseObj");
+        } catch (RSIllegalArgumentException e) {
+        }
+        B.destroy();
+
+        F = Font.create(mRS, mRes, "serif", S, 8);
+        assertTrue(F != null);
+        B = F;
+        try {
+            B.setName("");
+            fail("set empty name for a BaseObj");
+        } catch (RSIllegalArgumentException e) {
+        }
+        B.setName("serif");
+        B.destroy();
+
+        F = Font.create(mRS, mRes, "mono", S, 8);
+        assertTrue(F != null);
+        B = F;
+        try {
+            B.setName(null);
+            fail("set name as null string reference for a BaseObj");
+        } catch (RSIllegalArgumentException e) {
+        }
+        B.setName("mono");
+        B.destroy();
+    }
+}
+
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ComputeTest.java b/tests/tests/renderscript/src/android/renderscript/cts/ComputeTest.java
index 8d24227..59c4de4 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/ComputeTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/ComputeTest.java
@@ -22,6 +22,12 @@
 import android.renderscript.Byte3;
 import android.renderscript.Byte4;
 
+import android.renderscript.Double2;
+import android.renderscript.Double3;
+import android.renderscript.Double4;
+
+import android.renderscript.Element;
+
 import android.renderscript.Float2;
 import android.renderscript.Float3;
 import android.renderscript.Float4;
@@ -34,10 +40,14 @@
 import android.renderscript.Long3;
 import android.renderscript.Long4;
 
+import android.renderscript.RSRuntimeException;
+
 import android.renderscript.Short2;
 import android.renderscript.Short3;
 import android.renderscript.Short4;
 
+import android.renderscript.Type;
+
 import com.android.cts.stub.R;
 
 public class ComputeTest extends RSBaseCompute {
@@ -46,15 +56,52 @@
         Byte2 b2 = new Byte2();
         b2.x = 1;
         b2.y = 2;
+        b2 = new Byte2((byte)1, (byte)2);
+        assertTrue(b2.x == 1);
+        assertTrue(b2.y == 2);
         Byte3 b3 = new Byte3();
         b3.x = 1;
         b3.y = 2;
         b3.z = 2;
+        b3 = new Byte3((byte)1, (byte)2, (byte)3);
+        assertTrue(b3.x == 1);
+        assertTrue(b3.y == 2);
+        assertTrue(b3.z == 3);
         Byte4 b4 = new Byte4();
         b4.x = 1;
         b4.y = 2;
         b4.x = 3;
         b4.w = 4;
+        b4 = new Byte4((byte)1, (byte)2, (byte)3, (byte)4);
+        assertTrue(b4.x == 1);
+        assertTrue(b4.y == 2);
+        assertTrue(b4.z == 3);
+        assertTrue(b4.w == 4);
+
+        Double2 d2 = new Double2();
+        d2.x = 1.0;
+        d2.y = 2.0;
+        d2 = new Double2(1.0, 2.0);
+        assertTrue(d2.x == 1.0);
+        assertTrue(d2.y == 2.0);
+        Double3 d3 = new Double3();
+        d3.x = 1.0;
+        d3.y = 2.0;
+        d3.z = 3.0;
+        d3 = new Double3(1.0, 2.0, 3.0);
+        assertTrue(d3.x == 1.0);
+        assertTrue(d3.y == 2.0);
+        assertTrue(d3.z == 3.0);
+        Double4 d4 = new Double4();
+        d4.x = 1.0;
+        d4.y = 2.0;
+        d4.x = 3.0;
+        d4.w = 4.0;
+        d4 = new Double4(1.0, 2.0, 3.0, 4.0);
+        assertTrue(d4.x == 1.0);
+        assertTrue(d4.y == 2.0);
+        assertTrue(d4.z == 3.0);
+        assertTrue(d4.w == 4.0);
 
         Float2 f2 = new Float2();
         f2.x = 1.0f;
@@ -84,41 +131,77 @@
         Int2 i2 = new Int2();
         i2.x = 1;
         i2.y = 2;
+        i2 = new Int2(1, 2);
+        assertTrue(i2.x == 1);
+        assertTrue(i2.y == 2);
         Int3 i3 = new Int3();
         i3.x = 1;
         i3.y = 2;
         i3.z = 3;
+        i3 = new Int3(1, 2, 3);
+        assertTrue(i3.x == 1);
+        assertTrue(i3.y == 2);
+        assertTrue(i3.z == 3);
         Int4 i4 = new Int4();
         i4.x = 1;
         i4.y = 2;
         i4.x = 3;
         i4.w = 4;
+        i4 = new Int4(1, 2, 3, 4);
+        assertTrue(i4.x == 1);
+        assertTrue(i4.y == 2);
+        assertTrue(i4.z == 3);
+        assertTrue(i4.w == 4);
 
         Long2 l2 = new Long2();
         l2.x = 1;
         l2.y = 2;
+        l2 = new Long2(1, 2);
+        assertTrue(l2.x == 1);
+        assertTrue(l2.y == 2);
         Long3 l3 = new Long3();
         l3.x = 1;
         l3.y = 2;
         l3.z = 3;
+        l3 = new Long3(1, 2, 3);
+        assertTrue(l3.x == 1);
+        assertTrue(l3.y == 2);
+        assertTrue(l3.z == 3);
         Long4 l4 = new Long4();
         l4.x = 1;
         l4.y = 2;
         l4.x = 3;
         l4.w = 4;
+        l4 = new Long4(1, 2, 3, 4);
+        assertTrue(l4.x == 1);
+        assertTrue(l4.y == 2);
+        assertTrue(l4.z == 3);
+        assertTrue(l4.w == 4);
 
         Short2 s2 = new Short2();
         s2.x = 1;
         s2.y = 2;
+        s2 = new Short2((short)1, (short)2);
+        assertTrue(s2.x == 1);
+        assertTrue(s2.y == 2);
         Short3 s3 = new Short3();
         s3.x = 1;
         s3.y = 2;
         s3.z = 3;
+        s3 = new Short3((short)1, (short)2, (short)3);
+        assertTrue(s3.x == 1);
+        assertTrue(s3.y == 2);
+        assertTrue(s3.z == 3);
         Short4 s4 = new Short4();
         s4.x = 1;
         s4.y = 2;
         s4.x = 3;
         s4.w = 4;
+        s4 = new Short4((short)1, (short)2, (short)3, (short)4);
+        assertTrue(s4.x == 1);
+        assertTrue(s4.y == 2);
+        assertTrue(s4.z == 3);
+        assertTrue(s4.w == 4);
     }
 
     private boolean initializeGlobals(ScriptC_primitives s) {
@@ -241,4 +324,52 @@
         assertEquals(result, RS_MSG_TEST_PASSED);
     }
 
+    void setUpAllocation(Allocation a, int val) {
+        Type t = a.getType();
+        int x = t.getX();
+
+        int[] arr = new int[x];
+        for (int i = 0; i < x; i++) {
+            arr[i] = val;
+        }
+        a.copyFrom(arr);
+    }
+
+    void checkAllocation(Allocation a, int val) {
+        Type t = a.getType();
+        int x = t.getX();
+
+        int[] arr = new int[x];
+        a.copyTo(arr);
+        for (int i = 0; i < x; i++) {
+            assertTrue(arr[i] == val);
+        }
+    }
+
+    /**
+     * Test support for reflected forEach() as well as validation of parameters.
+     */
+    public void testForEach() {
+        ScriptC_negate s = new ScriptC_negate(mRS,
+                                              mRes,
+                                              R.raw.negate);
+
+        int x = 7;
+        Type t = new Type.Builder(mRS, Element.I32(mRS)).setX(x).create();
+        Allocation in = Allocation.createTyped(mRS, t);
+        Allocation out = Allocation.createTyped(mRS, t);
+
+        int val = 5;
+        setUpAllocation(in, val);
+        s.forEach_root(in, out);
+        checkAllocation(out, -val);
+
+        Type badT = new Type.Builder(mRS, Element.I32(mRS)).setX(x-1).create();
+        Allocation badOut = Allocation.createTyped(mRS, badT);
+        try {
+            s.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+    }
 }
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ElementTest.java b/tests/tests/renderscript/src/android/renderscript/cts/ElementTest.java
index 7723c20..4f8185a 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/ElementTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/ElementTest.java
@@ -72,15 +72,41 @@
         assertTrue(Element.F32_3(mRS) != null);
         assertTrue(Element.F32_4(mRS) != null);
         assertTrue(Element.F64(mRS) != null);
+        assertTrue(Element.F64_2(mRS) != null);
+        assertTrue(Element.F64_3(mRS) != null);
+        assertTrue(Element.F64_4(mRS) != null);
         assertTrue(Element.I8(mRS) != null);
+        assertTrue(Element.I8_2(mRS) != null);
+        assertTrue(Element.I8_3(mRS) != null);
+        assertTrue(Element.I8_4(mRS) != null);
         assertTrue(Element.I16(mRS) != null);
+        assertTrue(Element.I16_2(mRS) != null);
+        assertTrue(Element.I16_3(mRS) != null);
+        assertTrue(Element.I16_4(mRS) != null);
         assertTrue(Element.I32(mRS) != null);
+        assertTrue(Element.I32_2(mRS) != null);
+        assertTrue(Element.I32_3(mRS) != null);
+        assertTrue(Element.I32_4(mRS) != null);
         assertTrue(Element.I64(mRS) != null);
+        assertTrue(Element.I64_2(mRS) != null);
+        assertTrue(Element.I64_3(mRS) != null);
+        assertTrue(Element.I64_4(mRS) != null);
         assertTrue(Element.U8(mRS) != null);
+        assertTrue(Element.U8_2(mRS) != null);
+        assertTrue(Element.U8_3(mRS) != null);
         assertTrue(Element.U8_4(mRS) != null);
         assertTrue(Element.U16(mRS) != null);
+        assertTrue(Element.U16_2(mRS) != null);
+        assertTrue(Element.U16_3(mRS) != null);
+        assertTrue(Element.U16_4(mRS) != null);
         assertTrue(Element.U32(mRS) != null);
+        assertTrue(Element.U32_2(mRS) != null);
+        assertTrue(Element.U32_3(mRS) != null);
+        assertTrue(Element.U32_4(mRS) != null);
         assertTrue(Element.U64(mRS) != null);
+        assertTrue(Element.U64_2(mRS) != null);
+        assertTrue(Element.U64_3(mRS) != null);
+        assertTrue(Element.U64_4(mRS) != null);
         assertTrue(Element.MATRIX_2X2(mRS) != null);
         assertTrue(Element.MATRIX_3X3(mRS) != null);
         assertTrue(Element.MATRIX_4X4(mRS) != null);
@@ -98,6 +124,143 @@
         assertTrue(Element.ELEMENT(mRS) != null);
     }
 
+    public void testEquals() {
+        assertTrue(Element.A_8(mRS).equals(Element.A_8(mRS)));
+        assertFalse(Element.A_8(mRS).equals(Element.U8(mRS)));
+
+        // Compatible elements
+        assertTrue(Element.A_8(mRS).isCompatible(Element.U8(mRS)));
+        assertTrue(Element.U8(mRS).isCompatible(Element.A_8(mRS)));
+
+        // Verify equivalence of user-built Elements
+        Element.Builder eb1 = new Element.Builder(mRS);
+        eb1.add(Element.I8(mRS), "Test");
+        Element e1 = eb1.add(Element.U8(mRS), "UTest").create();
+
+        assertTrue(e1.equals(e1));
+
+        Element.Builder eb2 = new Element.Builder(mRS);
+        eb2.add(Element.I8(mRS), "Test");
+        Element e2 = eb2.add(Element.U8(mRS), "UTest").create();
+
+        assertTrue(e1.equals(e2));
+        assertTrue(e2.equals(e1));
+        assertTrue(e1.hashCode() == e2.hashCode());
+        assertTrue(e1.isCompatible(e2));
+        assertTrue(e2.isCompatible(e1));
+
+        // Check name differences
+        Element.Builder eb3 = new Element.Builder(mRS);
+        eb3.add(Element.I8(mRS), "Test");
+        Element e3 = eb3.add(Element.U8(mRS), "NotUTest").create();
+
+        assertFalse(e1.equals(e3));
+        assertFalse(e3.equals(e1));
+        assertFalse(e1.isCompatible(e3));
+        assertFalse(e3.isCompatible(e1));
+
+        eb1.add(Element.I8(mRS), "Another");
+        assertFalse(e1.equals(eb1.create()));
+        assertFalse(eb1.create().equals(e1));
+
+        // Compatible sub-elements but neither equal nor compatible
+        Element.Builder eb4 = new Element.Builder(mRS);
+        eb4.add(Element.I8(mRS), "Test");
+        Element e4 = eb4.add(Element.A_8(mRS), "UTest").create();
+
+        assertFalse(e1.equals(e4));
+        assertFalse(e4.equals(e1));
+        assertFalse(e1.isCompatible(e4));
+        assertFalse(e4.isCompatible(e1));
+
+        // Check identity from same builder
+        assertTrue(eb1.create().isCompatible(eb1.create()));
+    }
+
+    public void testIsCompatible() {
+        Element[] ALLOCATION = { Element.ALLOCATION(mRS) };
+        // A_8 is in U8
+        Element[] BOOLEAN = { Element.BOOLEAN(mRS) };
+        Element[] ELEMENT = { Element.ELEMENT(mRS) };
+        Element[] F32 = { Element.F32(mRS) };
+        Element[] F32_2 = { Element.F32_2(mRS),
+            Element.createVector(mRS, Element.DataType.FLOAT_32, 2) };
+        Element[] F32_3 = { Element.F32_3(mRS),
+            Element.createVector(mRS, Element.DataType.FLOAT_32, 3) };
+        Element[] F32_4 = { Element.F32_4(mRS),
+            Element.createVector(mRS, Element.DataType.FLOAT_32, 4) };
+        Element[] F64 = { Element.F64(mRS) };
+        Element[] I16 = { Element.I16(mRS) };
+        Element[] I32 = { Element.I32(mRS) };
+        Element[] I64 = { Element.I64(mRS) };
+        Element[] I8 = { Element.I8(mRS) };
+        // MATRIX4X4 is in MATRIX_4X4
+        Element[] MATRIX_2X2 = { Element.MATRIX_2X2(mRS) };
+        Element[] MATRIX_3X3 = { Element.MATRIX_3X3(mRS) };
+        Element[] MATRIX_4X4 = { Element.MATRIX4X4(mRS),
+                                 Element.MATRIX_4X4(mRS) };
+        Element[] MESH = { Element.MESH(mRS) };
+        Element[] PROGRAM_FRAGMENT = { Element.PROGRAM_FRAGMENT(mRS) };
+        Element[] PROGRAM_RASTER = { Element.PROGRAM_RASTER(mRS) };
+        Element[] PROGRAM_STORE = { Element.PROGRAM_STORE(mRS) };
+        Element[] PROGRAM_VERTEX = { Element.PROGRAM_VERTEX(mRS) };
+        Element[] RGBA_4444 = { Element.RGBA_4444(mRS),
+            Element.createPixel(mRS, Element.DataType.UNSIGNED_4_4_4_4,
+                                Element.DataKind.PIXEL_RGBA) };
+        Element[] RGBA_5551 = { Element.RGBA_5551(mRS),
+            Element.createPixel(mRS, Element.DataType.UNSIGNED_5_5_5_1,
+                                Element.DataKind.PIXEL_RGBA) };
+        // RGBA_8888 is in U8_4
+        Element[] RGB_565 = { Element.RGB_565(mRS),
+            Element.createPixel(mRS, Element.DataType.UNSIGNED_5_6_5,
+                                Element.DataKind.PIXEL_RGB) };
+        // RGB_888 is in U8_3
+        Element[] SAMPLER = { Element.SAMPLER(mRS) };
+        Element[] SCRIPT = { Element.SCRIPT(mRS) };
+        Element[] TYPE = { Element.TYPE(mRS) };
+        Element[] U16 = { Element.U16(mRS) };
+        Element[] U32 = { Element.U32(mRS) };
+        Element[] U64 = { Element.U64(mRS) };
+        Element[] U8 = { Element.A_8(mRS),
+                         Element.U8(mRS),
+            Element.createPixel(mRS, Element.DataType.UNSIGNED_8,
+                                Element.DataKind.PIXEL_A) };
+        Element[] U8_3 = { Element.RGB_888(mRS),
+            Element.createVector(mRS, Element.DataType.UNSIGNED_8, 3),
+            Element.createPixel(mRS, Element.DataType.UNSIGNED_8,
+                                Element.DataKind.PIXEL_RGB) };
+        Element[] U8_4 = { Element.U8_4(mRS),
+                           Element.RGBA_8888(mRS),
+            Element.createVector(mRS, Element.DataType.UNSIGNED_8, 4),
+            Element.createPixel(mRS, Element.DataType.UNSIGNED_8,
+                                Element.DataKind.PIXEL_RGBA) };
+
+        Element[][] ElementArrs = { ALLOCATION, BOOLEAN, ELEMENT, F32, F32_2,
+                                    F32_3, F32_4, F64, I16, I32, I64, I8,
+                                    MATRIX_2X2, MATRIX_3X3, MATRIX_4X4, MESH,
+                                    PROGRAM_FRAGMENT, PROGRAM_RASTER,
+                                    PROGRAM_STORE, PROGRAM_VERTEX, RGBA_4444,
+                                    RGBA_5551, RGB_565, SAMPLER, SCRIPT, TYPE,
+                                    U16, U32, U64, U8, U8_3, U8_4 };
+
+        int ElementArrsLen = ElementArrs.length;
+        for (int i = 0; i < ElementArrsLen; i++) {
+            for (int j = 0; j < ElementArrsLen; j++) {
+                for (Element el : ElementArrs[i]) {
+                    for (Element er : ElementArrs[j]) {
+                        if (i == j) {
+                            // Elements within a group are compatible
+                            assertTrue(el.isCompatible(er));
+                        } else {
+                            // Elements from different groups are incompatible
+                            assertFalse(el.isCompatible(er));
+                        }
+                    }
+                }
+            }
+        }
+    }
+
     public void testElementBuilder() {
         for (int arraySize = 1; arraySize <= 3; arraySize++) {
             // Now test array size
@@ -113,15 +276,41 @@
             eb.add(Element.F32_3(mRS), "F32_3", arraySize);
             eb.add(Element.F32_4(mRS), "F32_4", arraySize);
             eb.add(Element.F64(mRS), "F64", arraySize);
+            eb.add(Element.F64_2(mRS), "F64_2", arraySize);
+            eb.add(Element.F64_3(mRS), "F64_3", arraySize);
+            eb.add(Element.F64_4(mRS), "F64_4", arraySize);
             eb.add(Element.I8(mRS), "I8", arraySize);
+            eb.add(Element.I8_2(mRS), "I8_2", arraySize);
+            eb.add(Element.I8_3(mRS), "I8_3", arraySize);
+            eb.add(Element.I8_4(mRS), "I8_4", arraySize);
             eb.add(Element.I16(mRS), "I16", arraySize);
+            eb.add(Element.I16_2(mRS), "I16_2", arraySize);
+            eb.add(Element.I16_3(mRS), "I16_3", arraySize);
+            eb.add(Element.I16_4(mRS), "I16_4", arraySize);
             eb.add(Element.I32(mRS), "I32", arraySize);
+            eb.add(Element.I32_2(mRS), "I32_2", arraySize);
+            eb.add(Element.I32_3(mRS), "I32_3", arraySize);
+            eb.add(Element.I32_4(mRS), "I32_4", arraySize);
             eb.add(Element.I64(mRS), "I64", arraySize);
+            eb.add(Element.I64_2(mRS), "I64_2", arraySize);
+            eb.add(Element.I64_3(mRS), "I64_3", arraySize);
+            eb.add(Element.I64_4(mRS), "I64_4", arraySize);
             eb.add(Element.U8(mRS), "U8", arraySize);
+            eb.add(Element.U8_2(mRS), "U8_2", arraySize);
+            eb.add(Element.U8_3(mRS), "U8_3", arraySize);
             eb.add(Element.U8_4(mRS), "U8_4", arraySize);
             eb.add(Element.U16(mRS), "U16", arraySize);
+            eb.add(Element.U16_2(mRS), "U16_2", arraySize);
+            eb.add(Element.U16_3(mRS), "U16_3", arraySize);
+            eb.add(Element.U16_4(mRS), "U16_4", arraySize);
             eb.add(Element.U32(mRS), "U32", arraySize);
+            eb.add(Element.U32_2(mRS), "U32_2", arraySize);
+            eb.add(Element.U32_3(mRS), "U32_3", arraySize);
+            eb.add(Element.U32_4(mRS), "U32_4", arraySize);
             eb.add(Element.U64(mRS), "U64", arraySize);
+            eb.add(Element.U64_2(mRS), "U64_2", arraySize);
+            eb.add(Element.U64_3(mRS), "U64_3", arraySize);
+            eb.add(Element.U64_4(mRS), "U64_4", arraySize);
             eb.add(Element.MATRIX_2X2(mRS), "MATRIX_2X2", arraySize);
             eb.add(Element.MATRIX_3X3(mRS), "MATRIX_3X3", arraySize);
             eb.add(Element.MATRIX_4X4(mRS), "MATRIX_4X4", arraySize);
@@ -153,15 +342,41 @@
         assertFalse(Element.F32_3(mRS).isComplex());
         assertFalse(Element.F32_4(mRS).isComplex());
         assertFalse(Element.F64(mRS).isComplex());
+        assertFalse(Element.F64_2(mRS).isComplex());
+        assertFalse(Element.F64_3(mRS).isComplex());
+        assertFalse(Element.F64_4(mRS).isComplex());
         assertFalse(Element.I8(mRS).isComplex());
+        assertFalse(Element.I8_2(mRS).isComplex());
+        assertFalse(Element.I8_3(mRS).isComplex());
+        assertFalse(Element.I8_4(mRS).isComplex());
         assertFalse(Element.I16(mRS).isComplex());
+        assertFalse(Element.I16_2(mRS).isComplex());
+        assertFalse(Element.I16_3(mRS).isComplex());
+        assertFalse(Element.I16_4(mRS).isComplex());
         assertFalse(Element.I32(mRS).isComplex());
+        assertFalse(Element.I32_2(mRS).isComplex());
+        assertFalse(Element.I32_3(mRS).isComplex());
+        assertFalse(Element.I32_4(mRS).isComplex());
         assertFalse(Element.I64(mRS).isComplex());
+        assertFalse(Element.I64_2(mRS).isComplex());
+        assertFalse(Element.I64_3(mRS).isComplex());
+        assertFalse(Element.I64_4(mRS).isComplex());
         assertFalse(Element.U8(mRS).isComplex());
+        assertFalse(Element.U8_2(mRS).isComplex());
+        assertFalse(Element.U8_3(mRS).isComplex());
         assertFalse(Element.U8_4(mRS).isComplex());
         assertFalse(Element.U16(mRS).isComplex());
+        assertFalse(Element.U16_2(mRS).isComplex());
+        assertFalse(Element.U16_3(mRS).isComplex());
+        assertFalse(Element.U16_4(mRS).isComplex());
         assertFalse(Element.U32(mRS).isComplex());
+        assertFalse(Element.U32_2(mRS).isComplex());
+        assertFalse(Element.U32_3(mRS).isComplex());
+        assertFalse(Element.U32_4(mRS).isComplex());
         assertFalse(Element.U64(mRS).isComplex());
+        assertFalse(Element.U64_2(mRS).isComplex());
+        assertFalse(Element.U64_3(mRS).isComplex());
+        assertFalse(Element.U64_4(mRS).isComplex());
         assertFalse(Element.MATRIX_2X2(mRS).isComplex());
         assertFalse(Element.MATRIX_3X3(mRS).isComplex());
         assertFalse(Element.MATRIX_4X4(mRS).isComplex());
@@ -244,8 +459,9 @@
         assertEquals(DataKind.PIXEL_LA, DataKind.valueOf("PIXEL_LA"));
         assertEquals(DataKind.PIXEL_RGB, DataKind.valueOf("PIXEL_RGB"));
         assertEquals(DataKind.PIXEL_RGBA, DataKind.valueOf("PIXEL_RGBA"));
+        assertEquals(DataKind.PIXEL_DEPTH, DataKind.valueOf("PIXEL_DEPTH"));
         // Make sure no new enums are added
-        assertEquals(6, DataKind.values().length);
+        assertEquals(7, DataKind.values().length);
 
         for (DataKind dk : DataKind.values()) {
             if (dk != DataKind.USER) {
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/FieldPackerTest.java b/tests/tests/renderscript/src/android/renderscript/cts/FieldPackerTest.java
index f986d4b..8625b9f 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/FieldPackerTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/FieldPackerTest.java
@@ -20,6 +20,9 @@
 import android.renderscript.Byte3;
 import android.renderscript.Byte4;
 import android.renderscript.FieldPacker;
+import android.renderscript.Double2;
+import android.renderscript.Double3;
+import android.renderscript.Double4;
 import android.renderscript.Float2;
 import android.renderscript.Float3;
 import android.renderscript.Float4;
@@ -32,6 +35,7 @@
 import android.renderscript.Matrix2f;
 import android.renderscript.Matrix3f;
 import android.renderscript.Matrix4f;
+import android.renderscript.RSIllegalArgumentException;
 import android.renderscript.Short2;
 import android.renderscript.Short3;
 import android.renderscript.Short4;
@@ -46,6 +50,9 @@
         fp.addF32(new Float4());
         fp.addF32(new Float2());
         fp.addF64(0.2);
+        fp.addF64(new Double2());
+        fp.addF64(new Double3());
+        fp.addF64(new Double4());
         fp.addI16(new Short3());
         fp.addI16(new Short2());
         fp.addI16((short)-2);
@@ -55,6 +62,9 @@
         fp.addI32(new Int4());
         fp.addI32(new Int2());
         fp.addI64(-8);
+        fp.addI64(new Long2());
+        fp.addI64(new Long3());
+        fp.addI64(new Long4());
         fp.addI8((byte)-1);
         fp.addI8(new Byte4());
         fp.addI8(new Byte2());
@@ -72,21 +82,89 @@
         fp.addU32(new Long3());
         fp.addU32(4);
         fp.addU64(8);
+        fp.addU64(new Long2());
+        fp.addU64(new Long3());
+        fp.addU64(new Long4());
         fp.addU8(new Short2());
         fp.addU8(new Short4());
         fp.addU8((byte)1);
         fp.addU8(new Short3());
     }
 
-    public void testAlign() {
-        /*
-        fp.align(int v);
-        final byte[]     getData();
-        fp.reset(int i);
-        fp.reset();
-        fp.skip(int i);
-        */
+    public void testAlignResetSkip() {
+        for (int alignAmount = 1; alignAmount < 16; alignAmount <<= 1) {
+            FieldPacker fp = new FieldPacker(256);
+            for (int i = 0; i < 32; i++) {
+                fp.align(alignAmount);
+                fp.addI8((byte)i);
+            }
+
+            byte[] b = fp.getData();
+            for (int i = 0; i < 32; i++) {
+                assertEquals(i, b[alignAmount * i]);
+            }
+
+            // Check that align is zeroing out bytes in between
+            fp.reset();
+            fp.addI8((byte)0);
+            fp.align(256);
+            b = fp.getData();
+            for (int i = 0; i < 256; i++) {
+                assertEquals(0, b[i]);
+            }
+        }
+
+        for (int skipAmount = 1; skipAmount < 4; skipAmount++) {
+            FieldPacker fp = new FieldPacker(256);
+            for (int i = 0; i < 32; i++) {
+                fp.addI8((byte)i);
+                fp.skip(skipAmount);
+            }
+            fp.reset(1);
+            for (int i = 0; i < 32; i++) {
+                fp.addI8((byte)i);
+                fp.skip(skipAmount);
+            }
+
+            byte[] b = fp.getData();
+            for (int i = 0; i < 32; i++) {
+                // Check that skip is not altering any other bytes
+                assertEquals(i, b[i * (skipAmount + 1)]);
+                assertEquals(i, b[(i * (skipAmount + 1)) + 1]);
+            }
+        }
+
+        // Error cases
+        FieldPacker fp = new FieldPacker(256);
+
+        int[] badAlignArgs = {-4, -3, -2, -1, 0, 3, 5, 127};
+        for (int arg: badAlignArgs) {
+            try {
+                fp.align(arg);
+                fail("should throw RSIllegalArgumentException.");
+            } catch (RSIllegalArgumentException e) {
+            }
+        }
+
+        int[] badResetArgs = {-1000, -2, -1, 256, 257, 1000};
+        for (int arg: badResetArgs) {
+            try {
+                fp.reset(arg);
+                fail("should throw RSIllegalArgumentException.");
+            } catch (RSIllegalArgumentException e) {
+            }
+        }
+
+        // Skip allows us to move 1 past the final element in the FieldPacker
+        int[] badSkipArgs = {-1000, -6, -5, 253, 1000};
+        for (int arg: badSkipArgs) {
+            try {
+                fp.reset(4);
+                fp.skip(arg);
+                fail("should throw RSIllegalArgumentException.");
+            } catch (RSIllegalArgumentException e) {
+            }
+        }
     }
 }
 
-
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/FontTest.java b/tests/tests/renderscript/src/android/renderscript/cts/FontTest.java
index e2405e8..a3e4da0 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/FontTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/FontTest.java
@@ -64,7 +64,7 @@
     }
 
     public void testCreateFromFile() {
-        String fontFile = "DroidSans.ttf";
+        String fontFile = "Roboto-Regular.ttf";
         String fontPath = Environment.getRootDirectory().getAbsolutePath();
         fontPath += "/fonts/" + fontFile;
         File fileDesc = new File(fontPath);
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ForEachTest.java b/tests/tests/renderscript/src/android/renderscript/cts/ForEachTest.java
new file mode 100644
index 0000000..12c8fb0
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/ForEachTest.java
@@ -0,0 +1,465 @@
+/*
+ * Copyright (C) 2011 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 android.renderscript.cts;
+
+import android.renderscript.Allocation;
+
+import android.renderscript.Byte2;
+import android.renderscript.Byte3;
+import android.renderscript.Byte4;
+
+import android.renderscript.Double2;
+import android.renderscript.Double3;
+import android.renderscript.Double4;
+
+import android.renderscript.Element;
+
+import android.renderscript.Float2;
+import android.renderscript.Float3;
+import android.renderscript.Float4;
+
+import android.renderscript.Int2;
+import android.renderscript.Int3;
+import android.renderscript.Int4;
+
+import android.renderscript.Long2;
+import android.renderscript.Long3;
+import android.renderscript.Long4;
+
+import android.renderscript.RSRuntimeException;
+
+import android.renderscript.Short2;
+import android.renderscript.Short3;
+import android.renderscript.Short4;
+
+import android.renderscript.Type;
+
+import com.android.cts.stub.R;
+
+public class ForEachTest extends RSBaseCompute {
+    /**
+     * Test support for reflected forEach() as well as validation of parameters.
+     */
+    public void testForEach() {
+        int x = 7;
+
+        // badOut is always I8, so it is always an invalid type
+        Type t = new Type.Builder(mRS, Element.I8(mRS)).setX(x).create();
+        Allocation badOut = Allocation.createTyped(mRS, t);
+
+        // I8
+        ScriptC_fe_i8 fe_i8 = new ScriptC_fe_i8(mRS, mRes, R.raw.fe_i8);
+        Allocation in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U8(mRS)).setX(x).create();
+        Allocation out = Allocation.createTyped(mRS, t);
+        fe_i8.forEach_root(in, out);
+        try {
+            fe_i8.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I8_2
+        ScriptC_fe_i8_2 fe_i8_2 = new ScriptC_fe_i8_2(mRS,
+                                                      mRes,
+                                                      R.raw.fe_i8_2);
+        t = new Type.Builder(mRS, Element.I8_2(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U8_2(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i8_2.forEach_root(in, out);
+        try {
+            fe_i8_2.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I8_3
+        ScriptC_fe_i8_3 fe_i8_3 = new ScriptC_fe_i8_3(mRS,
+                                                      mRes,
+                                                      R.raw.fe_i8_3);
+        t = new Type.Builder(mRS, Element.I8_3(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U8_3(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i8_3.forEach_root(in, out);
+        try {
+            fe_i8_3.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I8_4
+        ScriptC_fe_i8_4 fe_i8_4 = new ScriptC_fe_i8_4(mRS,
+                                                      mRes,
+                                                      R.raw.fe_i8_4);
+        t = new Type.Builder(mRS, Element.I8_4(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U8_4(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i8_4.forEach_root(in, out);
+        try {
+            fe_i8_4.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I16
+        ScriptC_fe_i16 fe_i16 = new ScriptC_fe_i16(mRS, mRes, R.raw.fe_i16);
+        t = new Type.Builder(mRS, Element.I16(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U16(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i16.forEach_root(in, out);
+        try {
+            fe_i16.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I16_2
+        ScriptC_fe_i16_2 fe_i16_2 = new ScriptC_fe_i16_2(mRS,
+                                                         mRes,
+                                                         R.raw.fe_i16_2);
+        t = new Type.Builder(mRS, Element.I16_2(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U16_2(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i16_2.forEach_root(in, out);
+        try {
+            fe_i16_2.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I16_3
+        ScriptC_fe_i16_3 fe_i16_3 = new ScriptC_fe_i16_3(mRS,
+                                                         mRes,
+                                                         R.raw.fe_i16_3);
+        t = new Type.Builder(mRS, Element.I16_3(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U16_3(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i16_3.forEach_root(in, out);
+        try {
+            fe_i16_3.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I16_4
+        ScriptC_fe_i16_4 fe_i16_4 = new ScriptC_fe_i16_4(mRS,
+                                                         mRes,
+                                                         R.raw.fe_i16_4);
+        t = new Type.Builder(mRS, Element.I16_4(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U16_4(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i16_4.forEach_root(in, out);
+        try {
+            fe_i16_4.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I32
+        ScriptC_fe_i32 fe_i32 = new ScriptC_fe_i32(mRS, mRes, R.raw.fe_i32);
+        t = new Type.Builder(mRS, Element.I32(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U32(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i32.forEach_root(in, out);
+        try {
+            fe_i32.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I32_2
+        ScriptC_fe_i32_2 fe_i32_2 = new ScriptC_fe_i32_2(mRS,
+                                                         mRes,
+                                                         R.raw.fe_i32_2);
+        t = new Type.Builder(mRS, Element.I32_2(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U32_2(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i32_2.forEach_root(in, out);
+        try {
+            fe_i32_2.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I32_3
+        ScriptC_fe_i32_3 fe_i32_3 = new ScriptC_fe_i32_3(mRS,
+                                                         mRes,
+                                                         R.raw.fe_i32_3);
+        t = new Type.Builder(mRS, Element.I32_3(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U32_3(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i32_3.forEach_root(in, out);
+        try {
+            fe_i32_3.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I32_4
+        ScriptC_fe_i32_4 fe_i32_4 = new ScriptC_fe_i32_4(mRS,
+                                                         mRes,
+                                                         R.raw.fe_i32_4);
+        t = new Type.Builder(mRS, Element.I32_4(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U32_4(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i32_4.forEach_root(in, out);
+        try {
+            fe_i32_4.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I64
+        ScriptC_fe_i64 fe_i64 = new ScriptC_fe_i64(mRS, mRes, R.raw.fe_i64);
+        t = new Type.Builder(mRS, Element.I64(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U64(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i64.forEach_root(in, out);
+        try {
+            fe_i64.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I64_2
+        ScriptC_fe_i64_2 fe_i64_2 = new ScriptC_fe_i64_2(mRS,
+                                                         mRes,
+                                                         R.raw.fe_i64_2);
+        t = new Type.Builder(mRS, Element.I64_2(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U64_2(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i64_2.forEach_root(in, out);
+        try {
+            fe_i64_2.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I64_3
+        ScriptC_fe_i64_3 fe_i64_3 = new ScriptC_fe_i64_3(mRS,
+                                                         mRes,
+                                                         R.raw.fe_i64_3);
+        t = new Type.Builder(mRS, Element.I64_3(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U64_3(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i64_3.forEach_root(in, out);
+        try {
+            fe_i64_3.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // I64_4
+        ScriptC_fe_i64_4 fe_i64_4 = new ScriptC_fe_i64_4(mRS,
+                                                         mRes,
+                                                         R.raw.fe_i64_4);
+        t = new Type.Builder(mRS, Element.I64_4(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.U64_4(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i64_4.forEach_root(in, out);
+        try {
+            fe_i64_4.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // F32
+        ScriptC_fe_f32 fe_f32 = new ScriptC_fe_f32(mRS, mRes, R.raw.fe_f32);
+        t = new Type.Builder(mRS, Element.F32(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        out = Allocation.createTyped(mRS, t);
+        fe_f32.forEach_root(in, out);
+        try {
+            fe_f32.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // F32_2
+        ScriptC_fe_f32_2 fe_f32_2 = new ScriptC_fe_f32_2(mRS,
+                                                         mRes,
+                                                         R.raw.fe_f32_2);
+        t = new Type.Builder(mRS, Element.F32_2(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.F32_2(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_f32_2.forEach_root(in, out);
+        try {
+            fe_f32_2.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // F32_3
+        ScriptC_fe_f32_3 fe_f32_3 = new ScriptC_fe_f32_3(mRS,
+                                                         mRes,
+                                                         R.raw.fe_f32_3);
+        t = new Type.Builder(mRS, Element.F32_3(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        out = Allocation.createTyped(mRS, t);
+        fe_f32_3.forEach_root(in, out);
+        try {
+            fe_f32_3.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // F32_4
+        ScriptC_fe_f32_4 fe_f32_4 = new ScriptC_fe_f32_4(mRS,
+                                                         mRes,
+                                                         R.raw.fe_f32_4);
+        t = new Type.Builder(mRS, Element.F32_4(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        out = Allocation.createTyped(mRS, t);
+        fe_f32_4.forEach_root(in, out);
+        try {
+            fe_f32_4.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // F64
+        ScriptC_fe_f64 fe_f64 = new ScriptC_fe_f64(mRS, mRes, R.raw.fe_f64);
+        t = new Type.Builder(mRS, Element.F64(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        out = Allocation.createTyped(mRS, t);
+        fe_f64.forEach_root(in, out);
+        try {
+            fe_f64.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // F64_2
+        ScriptC_fe_f64_2 fe_f64_2 = new ScriptC_fe_f64_2(mRS,
+                                                         mRes,
+                                                         R.raw.fe_f64_2);
+        t = new Type.Builder(mRS, Element.F64_2(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        out = Allocation.createTyped(mRS, t);
+        fe_f64_2.forEach_root(in, out);
+        try {
+            fe_f64_2.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // F64_3
+        ScriptC_fe_f64_3 fe_f64_3 = new ScriptC_fe_f64_3(mRS,
+                                                         mRes,
+                                                         R.raw.fe_f64_3);
+        t = new Type.Builder(mRS, Element.F64_3(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        out = Allocation.createTyped(mRS, t);
+        fe_f64_3.forEach_root(in, out);
+        try {
+            fe_f64_3.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // F64_4
+        ScriptC_fe_f64_4 fe_f64_4 = new ScriptC_fe_f64_4(mRS,
+                                                         mRes,
+                                                         R.raw.fe_f64_4);
+        t = new Type.Builder(mRS, Element.F64_4(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        out = Allocation.createTyped(mRS, t);
+        fe_f64_4.forEach_root(in, out);
+        try {
+            fe_f64_4.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // fe_test (struct)
+        ScriptC_fe_struct fe_struct = new ScriptC_fe_struct(mRS,
+                                                            mRes,
+                                                            R.raw.fe_struct);
+        in = new ScriptField_fe_test(mRS, x).getAllocation();
+        out = new ScriptField_fe_test(mRS, x).getAllocation();
+        fe_struct.forEach_root(in, out);
+        try {
+            fe_struct.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // BOOLEAN
+        ScriptC_fe_bool fe_bool = new ScriptC_fe_bool(mRS, mRes, R.raw.fe_bool);
+        t = new Type.Builder(mRS, Element.BOOLEAN(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        out = Allocation.createTyped(mRS, t);
+        fe_bool.forEach_root(in, out);
+        try {
+            fe_bool.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // A_8
+        t = new Type.Builder(mRS, Element.I8(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.A_8(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i8.forEach_root(in, out);
+        try {
+            fe_i8.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // RGBA_8888
+        t = new Type.Builder(mRS, Element.I8_4(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.RGBA_8888(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i8_4.forEach_root(in, out);
+        try {
+            fe_i8_4.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+
+        // RGB_888
+        t = new Type.Builder(mRS, Element.I8_3(mRS)).setX(x).create();
+        in = Allocation.createTyped(mRS, t);
+        t = new Type.Builder(mRS, Element.RGB_888(mRS)).setX(x).create();
+        out = Allocation.createTyped(mRS, t);
+        fe_i8_3.forEach_root(in, out);
+        try {
+            fe_i8_3.forEach_root(in, badOut);
+            fail("should throw RSRuntimeException");
+        } catch (RSRuntimeException e) {
+        }
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ProgramFragmentTest.java b/tests/tests/renderscript/src/android/renderscript/cts/ProgramFragmentTest.java
index d6a7f0d..9a71386 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/ProgramFragmentTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/ProgramFragmentTest.java
@@ -131,7 +131,7 @@
 
         String simpleUni = "void main() {\n"+
                            "  vec4 col = vec4(0.1, 0.2, 0.3, 0.4);\n"+
-                           "  col = UNI_MVP * col;\n"+
+                           "  col = UNI_MATRIX * col;\n"+
                            "  gl_FragColor = col;\n"+
                            "}";
 
@@ -139,13 +139,13 @@
                               "  vec4 col = vec4(0.1, 0.2, 0.3, 0.4);"+
                               "  col += texture2D(UNI_Tex0, vec2(0.1, 0.1));\n"+
                               "  col += textureCube(UNI_Tex1, vec3(0.1, 0.2, 0.3));\n"+
-                              "  col = UNI_MVP * col;\n"+
+                              "  col = UNI_MATRIX * col;\n"+
                               "  gl_FragColor = col;\n"+
                               "}";
 
         String multiUni = "void main() {\n"+
                           "  vec4 col = vec4(0.1, 0.2, 0.3, 0.4);"+
-                          "  col = UNI_MVP * col;\n"+
+                          "  col = UNI_MATRIX * col;\n"+
                           "  col = UNI_EXTRA * col;\n"+
                           "  col += UNI_extra4;\n"+
                           "  col.xyz += UNI_extra3;\n "+
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ProgramVertexTest.java b/tests/tests/renderscript/src/android/renderscript/cts/ProgramVertexTest.java
index 0a5c60e..3c2c188 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/ProgramVertexTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/ProgramVertexTest.java
@@ -143,11 +143,11 @@
                             "}";
 
         String simpleAttrSimpleUni = "void main() {\n"+
-                                     "  gl_Position = UNI_MVP * ATTRIB_position;\n"+
+                                     "  gl_Position = UNI_MATRIX * ATTRIB_position;\n"+
                                      "}";
 
         String multiAttrMultiUni = "void main() {\n"+
-                                   "  vec4 temp = UNI_MVP * ATTRIB_position;\n"+
+                                   "  vec4 temp = UNI_MATRIX * ATTRIB_position;\n"+
                                    "  temp = UNI_EXTRA * temp;\n"+
                                    "  temp.xyz += ATTRIB_normal;\n"+
                                    "  temp.xy += ATTRIB_texture0;\n"+
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ScriptCTest.java b/tests/tests/renderscript/src/android/renderscript/cts/ScriptCTest.java
new file mode 100644
index 0000000..7f4ba93
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/ScriptCTest.java
@@ -0,0 +1,47 @@
+/*
+ * Copyright (C) 2011 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 android.renderscript.cts;
+
+import android.content.res.Resources;
+
+import android.renderscript.RenderScript;
+import android.renderscript.ScriptC;
+
+import com.android.cts.stub.R;
+
+public class ScriptCTest extends RSBaseCompute {
+
+    class ScriptCHelper extends ScriptC {
+        public ScriptCHelper(int id, RenderScript rs) {
+            super(id, rs);
+        }
+
+        public ScriptCHelper(RenderScript rs,
+                             Resources resources,
+                             int resourceID) {
+            super(rs, resources, resourceID);
+        }
+    }
+
+    public void testScriptC() {
+        // Test basic constructor
+        ScriptCHelper h = new ScriptCHelper(0, mRS);
+
+        // Test actual constructor
+        h = new ScriptCHelper(mRS, mRes, R.raw.negate);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/ScriptTest.java b/tests/tests/renderscript/src/android/renderscript/cts/ScriptTest.java
new file mode 100644
index 0000000..90b847a
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/ScriptTest.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2011 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 android.renderscript.cts;
+
+import android.content.res.Resources;
+
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.FieldPacker;
+import android.renderscript.RenderScript;
+import android.renderscript.Script;
+import android.renderscript.ScriptC;
+import android.renderscript.Type;
+
+import android.renderscript.cts.ScriptC_negate;
+
+import com.android.cts.stub.R;
+
+public class ScriptTest extends RSBaseCompute {
+
+    public void testScript() {
+        Script S = new ScriptC_primitives(mRS, mRes, R.raw.primitives);
+
+        S.setTimeZone("America/New_York");
+
+        S.setVar(4, 9.0f);  // floatTest
+        S.setVar(5, 9.0);  // doubleTest
+        S.setVar(6, 7);  // charTest
+        S.setVar(7, 300);  // shortTest
+        S.setVar(8, 20000);  // intTest
+        S.setVar(9, 20000000000l);  // longTest
+        S.setVar(11, true);  // boolTest
+
+        FieldPacker fp = new FieldPacker(4);
+        fp.addI32(3);
+        S.setVar(12, fp);  // structTest
+
+        Type.Builder tb = new Type.Builder(mRS, Element.I32(mRS));
+        Allocation a = Allocation.createTyped(mRS, tb.create());
+        S.setVar(13, a);  // allocationTest
+
+        S.bindAllocation(a, 14);  // intPtrTest
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/StructPadTest.java b/tests/tests/renderscript/src/android/renderscript/cts/StructPadTest.java
new file mode 100644
index 0000000..884a0dc
--- /dev/null
+++ b/tests/tests/renderscript/src/android/renderscript/cts/StructPadTest.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2011 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 android.renderscript.cts;
+
+import android.renderscript.Float4;
+
+public class StructPadTest extends RSBaseCompute {
+    /**
+     * Test for appropriate alignment/padding of structures.
+     */
+    public void testStructPadding() {
+        ScriptField_PadMe S = new ScriptField_PadMe(mRS, 1);
+        Float4 F4 = new Float4(1.0f, 2.0f, 3.0f, 4.0f);
+
+        S.set_i(0, 7, true);
+        S.set_f4(0, F4, true);
+        S.set_j(0, 9, true);
+
+        S.set(new ScriptField_PadMe.Item(), 0, true);
+    }
+}
diff --git a/tests/tests/renderscript/src/android/renderscript/cts/TypeTest.java b/tests/tests/renderscript/src/android/renderscript/cts/TypeTest.java
index 928abaf..13d4977 100644
--- a/tests/tests/renderscript/src/android/renderscript/cts/TypeTest.java
+++ b/tests/tests/renderscript/src/android/renderscript/cts/TypeTest.java
@@ -169,11 +169,31 @@
         assertEquals(Type.CubemapFace.NEGATIVE_X, Type.CubemapFace.valueOf("NEGATIVE_X"));
         assertEquals(Type.CubemapFace.NEGATIVE_Y, Type.CubemapFace.valueOf("NEGATIVE_Y"));
         assertEquals(Type.CubemapFace.NEGATIVE_Z, Type.CubemapFace.valueOf("NEGATIVE_Z"));
+        assertEquals(Type.CubemapFace.POSITIVE_X, Type.CubemapFace.valueOf("POSITIVE_X"));
+        assertEquals(Type.CubemapFace.POSITIVE_Y, Type.CubemapFace.valueOf("POSITIVE_Y"));
+        assertEquals(Type.CubemapFace.POSITIVE_Z, Type.CubemapFace.valueOf("POSITIVE_Z"));
+        // Legacy typo enums
         assertEquals(Type.CubemapFace.POSITVE_X, Type.CubemapFace.valueOf("POSITVE_X"));
         assertEquals(Type.CubemapFace.POSITVE_Y, Type.CubemapFace.valueOf("POSITVE_Y"));
         assertEquals(Type.CubemapFace.POSITVE_Z, Type.CubemapFace.valueOf("POSITVE_Z"));
         // Make sure no new enums are added
-        assertEquals(6, Type.CubemapFace.values().length);
+        assertEquals(9, Type.CubemapFace.values().length);
+    }
+
+    public void testEquals() {
+        Type.Builder b1 = new Type.Builder(mRS, Element.F32(mRS));
+        Type t1 = b1.setX(5).setY(5).create();
+
+        Type.Builder b2 = new Type.Builder(mRS, Element.F32(mRS));
+        Type t2 = b2.setX(5).setY(5).create();
+
+        assertTrue(t1.equals(t2));
+        assertTrue(t2.equals(t1));
+        assertTrue(t1.hashCode() == t2.hashCode());
+
+        t2 = b2.setX(4).create();
+        assertFalse(t1.equals(t2));
+        assertFalse(t2.equals(t1));
     }
 }
 
diff --git a/tests/tests/security/src/android/security/cts/CertificateData.java b/tests/tests/security/src/android/security/cts/CertificateData.java
index 22cf3e7..d92ec08 100644
--- a/tests/tests/security/src/android/security/cts/CertificateData.java
+++ b/tests/tests/security/src/android/security/cts/CertificateData.java
@@ -45,6 +45,7 @@
       "78:6A:74:AC:76:AB:14:7F:9C:6A:30:50:BA:9E:A8:7E:FE:9A:CE:3C",
       "27:96:BA:E6:3F:18:01:E2:77:26:1B:A0:D7:77:70:02:8F:20:EE:E4",
       "AD:7E:1C:28:B0:64:EF:8F:60:03:40:20:14:C3:D0:E3:37:0E:B5:8A",
+      "8D:17:84:D5:37:F3:03:7D:EC:70:FE:57:8B:51:9A:99:E6:10:D7:B0",
       "AE:50:83:ED:7C:F4:5C:BC:8F:61:C6:21:FE:68:5D:79:42:21:15:6E",
       "5F:4E:1F:CF:31:B7:91:3B:85:0B:54:F6:E5:FF:50:1A:2B:6F:C6:CF",
       "74:F8:A3:C3:EF:E7:B3:90:06:4B:83:90:3C:21:64:60:20:E5:DF:CE",
@@ -75,6 +76,7 @@
       "66:31:BF:9E:F7:4F:9E:B6:C9:D5:A6:0C:BA:6A:BE:D1:F7:BD:EF:7B",
       "87:9F:4B:EE:05:DF:98:58:3B:E3:60:D6:33:E7:0D:3F:FE:98:71:AF",
       "DE:3F:40:BD:50:93:D3:9B:6C:60:F6:DA:BC:07:62:01:00:89:76:C9",
+      "22:D5:D8:DF:8F:02:31:D1:8D:F7:9D:B7:CF:8A:2D:64:C9:3F:6C:3A",
       "06:08:3F:59:3F:15:A1:04:A0:69:A4:6B:A9:03:D0:06:B7:97:09:91",
       "E3:92:51:2F:0A:CF:F5:05:DF:F6:DE:06:7F:75:37:E1:65:EA:57:4B",
       "F1:8B:53:8D:1B:E9:03:B6:A6:F0:56:43:5B:17:15:89:CA:F3:6B:F2",
@@ -86,7 +88,7 @@
       "85:37:1C:A6:E5:50:14:3D:CE:28:03:47:1B:DE:3A:09:E8:F8:77:0F",
       "7E:78:4A:10:1C:82:65:CC:2D:E1:F1:6D:47:B4:40:CA:D9:0A:19:45",
       "D1:EB:23:A4:6D:17:D6:8F:D9:25:64:C2:F1:F1:60:17:64:D8:E3:49",
-      "74:2C:31:92:E6:07:E4:24:EB:45:49:54:2B:E1:BB:C5:3E:61:74:E2",
+      "A1:DB:63:93:91:6F:17:E4:18:55:09:40:04:15:C7:02:40:B0:AE:6B",
       "B8:01:86:D1:EB:9C:86:A5:41:04:CF:30:54:F3:4C:52:B7:E5:58:C6",
       "DE:28:F4:A4:FF:E5:B9:2F:A3:C5:03:D1:A3:49:A7:F9:96:2A:82:12",
       "80:25:EF:F4:6E:70:C8:D4:72:24:65:84:FE:40:3B:8A:8D:6A:DB:F5",
@@ -101,8 +103,10 @@
       "37:9A:19:7B:41:85:45:35:0C:A6:03:69:F3:3C:2E:AF:47:4F:20:79",
       "FA:B7:EE:36:97:26:62:FB:2D:B0:2A:F6:BF:03:FD:E8:7C:4B:2F:9B",
       "8B:AF:4C:9B:1D:F0:2A:92:F7:DA:12:8E:B9:1B:AC:F4:98:60:4B:6F",
+      "9F:74:4E:9F:2B:4D:BA:EC:0F:31:2C:50:B6:56:3B:8E:2D:93:C3:11",
       "39:4F:F6:85:0B:06:BE:52:E5:18:56:CC:10:E1:80:E8:82:B3:85:CC",
       "1F:49:14:F7:D8:74:95:1D:DD:AE:02:C0:BE:FD:3A:2D:82:75:51:85",
+      "07:E0:32:E0:20:B7:2C:3F:19:2F:06:28:A2:59:3A:19:A7:0F:06:9E",
       "D6:DA:A8:20:8D:09:D2:15:4D:24:B5:2F:CB:34:6E:B2:58:B2:8A:58",
       "32:3C:11:8E:1B:F7:B8:B6:52:54:E2:E2:10:0D:D6:02:90:37:F0:96",
       "67:65:0D:F1:7E:8E:7E:5B:82:40:A4:F4:56:4B:CF:E2:3D:69:C6:F0",
@@ -112,9 +116,11 @@
       "AB:48:F3:33:DB:04:AB:B9:C0:72:DA:5B:0C:C1:D0:57:F0:36:9B:46",
       "36:B1:2B:49:F9:81:9E:D7:4C:9E:BC:38:0F:C6:56:8F:5D:AC:B2:F7",
       "37:F7:6D:E6:07:7C:90:C5:B1:3E:93:1A:B7:41:10:B4:F2:E4:9A:27",
+      "AA:DB:BC:22:23:8F:C4:01:A1:27:BB:38:DD:F4:1D:DB:08:9E:F0:12",
       "3B:C4:9F:48:F8:F3:73:A0:9C:1E:BD:F8:5B:B1:C3:65:C7:D8:11:B3",
       "AC:ED:5F:65:53:FD:25:CE:01:5F:1F:7A:48:3B:6A:74:9F:61:78:C6",
       "B1:BC:96:8B:D4:F4:9D:62:2A:A8:9A:81:F2:15:01:52:A4:1D:82:9C",
+      "CF:9E:87:6D:D3:EB:FC:42:26:97:A3:B5:A3:7A:A0:76:A9:06:23:48",
       "47:BE:AB:C9:22:EA:E8:0E:78:78:34:62:A7:9F:45:C2:54:FD:E6:8B",
       "31:7A:2A:D0:7F:2B:33:5E:F5:A1:C3:4E:4B:57:E8:B7:D8:F1:FC:A6",
       "39:21:C1:15:C1:5D:0E:CA:5C:CB:5B:C4:F0:7D:21:D8:05:0B:56:6A",
@@ -126,6 +132,7 @@
       "C8:EC:8C:87:92:69:CB:4B:AB:39:E9:8D:7E:57:67:F3:14:95:73:9D",
       "03:9E:ED:B8:0B:E7:A0:3C:69:53:89:3B:20:D2:D9:32:3A:4C:2A:FD",
       "CB:A1:C5:F8:B0:E3:5E:B8:B9:45:12:D3:F9:34:A2:E9:06:10:D3:36",
+      "B8:23:6B:00:2F:1D:16:86:53:01:55:6C:11:A4:37:CA:EB:FF:C3:BB",
       "10:1D:FA:3F:D5:0B:CB:BB:9B:B5:60:0C:19:55:A4:1A:F4:73:3A:04",
       "87:82:C6:C3:04:35:3B:CF:D2:96:92:D2:59:3E:7D:44:D9:34:FF:11",
       "AE:C5:FB:3F:C8:E1:BF:C4:E5:4F:03:07:5A:9A:E8:00:B7:F7:B6:FA",
diff --git a/tests/tests/security/src/android/security/cts/CertificateTest.java b/tests/tests/security/src/android/security/cts/CertificateTest.java
index 541673b..0914c3f 100644
--- a/tests/tests/security/src/android/security/cts/CertificateTest.java
+++ b/tests/tests/security/src/android/security/cts/CertificateTest.java
@@ -52,12 +52,8 @@
 
     private Set<String> getDeviceCertificates() throws KeyStoreException,
             NoSuchAlgorithmException, CertificateException, IOException {
-        String trustStore = System.getProperty("javax.net.ssl.trustStore", null);
-        assertNotNull(trustStore);
-
-        KeyStore keyStore = KeyStore.getInstance("BKS");
-        InputStream inputStream = new FileInputStream(trustStore);
-        keyStore.load(inputStream, null);
+        KeyStore keyStore = KeyStore.getInstance("AndroidCAStore");
+        keyStore.load(null, null);
 
         List<String> aliases = Collections.list(keyStore.aliases());
         assertFalse(aliases.isEmpty());
diff --git a/tests/tests/speech/Android.mk b/tests/tests/speech/Android.mk
index a15b2ec..932c564 100755
--- a/tests/tests/speech/Android.mk
+++ b/tests/tests/speech/Android.mk
@@ -29,5 +29,7 @@
 
 LOCAL_SDK_VERSION := current
 
+LOCAL_INSTRUMENTATION_FOR := CtsTestStubs
+
 include $(BUILD_PACKAGE)
 
diff --git a/tests/tests/speech/AndroidManifest.xml b/tests/tests/speech/AndroidManifest.xml
index 6e1e528..778f763 100755
--- a/tests/tests/speech/AndroidManifest.xml
+++ b/tests/tests/speech/AndroidManifest.xml
@@ -24,9 +24,8 @@
 
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
 
-    <!--  self-instrumenting test package. -->
-    <instrumentation android:name="android.test.InstrumentationTestRunner"
-                     android:targetPackage="com.android.cts.speech"
+    <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+                     android:targetPackage="com.android.cts.stub"
                      android:label="CTS tests of android.speech"/>
 
 </manifest>
diff --git a/tests/tests/speech/src/android/speech/tts/cts/TextToSpeechServiceTest.java b/tests/tests/speech/src/android/speech/tts/cts/TextToSpeechServiceTest.java
new file mode 100644
index 0000000..c19f6c0
--- /dev/null
+++ b/tests/tests/speech/src/android/speech/tts/cts/TextToSpeechServiceTest.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2011 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 android.speech.tts.cts;
+
+import android.os.Environment;
+import android.speech.tts.TextToSpeech;
+import android.test.AndroidTestCase;
+
+import java.io.File;
+import java.io.FileOutputStream;
+import java.util.HashMap;
+
+/**
+ * Tests for {@link android.speech.tts.TextToSpeechService} using StubTextToSpeechService.
+ */
+public class TextToSpeechServiceTest extends AndroidTestCase {
+
+    private static final String UTTERANCE_ID = "utterance";
+    private static final String UTTERANCE = "text to speech cts test";
+    private static final String SAMPLE_FILE_NAME = "mytts.wav";
+
+    private TextToSpeechWrapper mTts;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        mTts = TextToSpeechWrapper.createTextToSpeechMockWrapper(getContext());
+        assertNotNull(mTts);
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        mTts.shutdown();
+    }
+
+    private TextToSpeech getTts() {
+        return mTts.getTts();
+    }
+
+    public void testSynthesizeToFile() throws Exception {
+        File sampleFile = new File(Environment.getExternalStorageDirectory(), SAMPLE_FILE_NAME);
+        try {
+            assertFalse(sampleFile.exists());
+
+            int result = getTts().synthesizeToFile(UTTERANCE, createParams(), sampleFile.getPath());
+            assertEquals("synthesizeToFile() failed", TextToSpeech.SUCCESS, result);
+
+            assertTrue("synthesizeToFile() completion timeout", mTts.waitForComplete(UTTERANCE_ID));
+            assertTrue("synthesizeToFile() didn't produce a file", sampleFile.exists());
+            assertTrue("synthesizeToFile() produced a non-sound file",
+                    TextToSpeechWrapper.isSoundFile(sampleFile.getPath()));
+        } finally {
+            sampleFile.delete();
+        }
+    }
+
+    public void testSpeak() throws Exception {
+        int result = getTts().speak(UTTERANCE, TextToSpeech.QUEUE_FLUSH, createParams());
+        assertEquals("speak() failed", TextToSpeech.SUCCESS, result);
+        assertTrue("speak() completion timeout", waitForUtterance());
+    }
+
+    public void testMediaPlayerFails() throws Exception {
+        File sampleFile = new File(Environment.getExternalStorageDirectory(), "notsound.wav");
+        try {
+            assertFalse(TextToSpeechWrapper.isSoundFile(sampleFile.getPath()));
+            FileOutputStream out = new FileOutputStream(sampleFile);
+            out.write(new byte[] { 0x01, 0x02 });
+            out.close();
+            assertFalse(TextToSpeechWrapper.isSoundFile(sampleFile.getPath()));
+        } finally {
+            sampleFile.delete();
+        }
+    }
+
+    private HashMap<String, String> createParams() {
+        HashMap<String, String> params = new HashMap<String,String>();
+        params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, UTTERANCE_ID);
+        return params;
+    }
+
+    private boolean waitForUtterance() throws InterruptedException {
+        return mTts.waitForComplete(UTTERANCE_ID);
+    }
+
+}
diff --git a/tests/tests/speech/src/android/speech/tts/cts/TextToSpeechTest.java b/tests/tests/speech/src/android/speech/tts/cts/TextToSpeechTest.java
index e012fe3..799fd8d 100644
--- a/tests/tests/speech/src/android/speech/tts/cts/TextToSpeechTest.java
+++ b/tests/tests/speech/src/android/speech/tts/cts/TextToSpeechTest.java
@@ -15,98 +15,31 @@
  */
 package android.speech.tts.cts;
 
-import dalvik.annotation.TestTargetClass;
-
-import android.media.MediaPlayer;
 import android.os.Environment;
 import android.speech.tts.TextToSpeech;
-import android.speech.tts.TextToSpeech.OnInitListener;
-import android.speech.tts.TextToSpeech.OnUtteranceCompletedListener;
 import android.test.AndroidTestCase;
-import android.util.Log;
 
 import java.io.File;
 import java.util.HashMap;
+import java.util.List;
 import java.util.Locale;
 
 /**
  * Tests for {@link android.speech.tts.TextToSpeech}
  */
-@TestTargetClass(TextToSpeech.class)
 public class TextToSpeechTest extends AndroidTestCase {
 
-    private TextToSpeech mTts;
-
-    private static final String UTTERANCE = "utterance";
+    private static final String UTTERANCE_ID = "utterance";
     private static final String SAMPLE_TEXT = "This is a sample text to speech string";
     private static final String SAMPLE_FILE_NAME = "mytts.wav";
-    /** maximum time to wait for tts to be initialized */
-    private static final int TTS_INIT_MAX_WAIT_TIME = 30 * 1000;
-    /** maximum time to wait for speech call to be complete */
-    private static final int TTS_SPEECH_MAX_WAIT_TIME = 5 * 1000;
-    private static final String LOG_TAG = "TextToSpeechTest";
 
-    /**
-     * Listener for waiting for TTS engine initialization completion.
-     */
-    private static class InitWaitListener implements OnInitListener {
-        private int mStatus = TextToSpeech.ERROR;
-
-        public void onInit(int status) {
-            mStatus = status;
-            synchronized(this) {
-                notify();
-            }
-        }
-
-        public boolean waitForInit() throws InterruptedException {
-            if (mStatus == TextToSpeech.SUCCESS) {
-                return true;
-            }
-            synchronized (this) {
-                wait(TTS_INIT_MAX_WAIT_TIME);
-            }
-            return mStatus == TextToSpeech.SUCCESS;
-        }
-    }
-
-    /**
-     * Listener for waiting for utterance completion.
-     */
-    private static class UtteranceWaitListener implements OnUtteranceCompletedListener {
-        private boolean mIsComplete = false;
-        private final String mExpectedUtterance;
-
-        public UtteranceWaitListener(String expectedUtteranceId) {
-            mExpectedUtterance = expectedUtteranceId;
-        }
-
-        public void onUtteranceCompleted(String utteranceId) {
-            if (mExpectedUtterance.equals(utteranceId)) {
-                synchronized(this) {
-                    mIsComplete = true;
-                    notify();
-                }
-            }
-        }
-
-        public boolean waitForComplete() throws InterruptedException {
-            if (mIsComplete) {
-                return true;
-            }
-            synchronized (this) {
-                wait(TTS_SPEECH_MAX_WAIT_TIME);
-                return mIsComplete;
-            }
-        }
-    }
+    private TextToSpeechWrapper mTts;
 
     @Override
     protected void setUp() throws Exception {
         super.setUp();
-        InitWaitListener listener = new InitWaitListener();
-        mTts = new TextToSpeech(getContext(), listener);
-        assertTrue(listener.waitForInit());
+        mTts = TextToSpeechWrapper.createTextToSpeechWrapper(getContext());
+        assertNotNull(mTts);
         assertTrue(checkAndSetLanguageAvailable());
     }
 
@@ -116,76 +49,92 @@
         mTts.shutdown();
     }
 
+    private TextToSpeech getTts() {
+        return mTts.getTts();
+    }
+
     /**
      * Ensures at least one language is available for tts
      */
-    private boolean  checkAndSetLanguageAvailable() {
+    private boolean checkAndSetLanguageAvailable() {
         // checks if at least one language is available in Tts
+        final Locale defaultLocale = Locale.getDefault();
+        // If the language for the default locale is available, then
+        // use that.
+        int defaultAvailability = getTts().isLanguageAvailable(defaultLocale);
+
+        if (defaultAvailability == TextToSpeech.LANG_AVAILABLE ||
+            defaultAvailability == TextToSpeech.LANG_COUNTRY_AVAILABLE ||
+            defaultAvailability == TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE) {
+            getTts().setLanguage(defaultLocale);
+            return true;
+        }
+
         for (Locale locale : Locale.getAvailableLocales()) {
-            int availability = mTts.isLanguageAvailable(locale);
+            int availability = getTts().isLanguageAvailable(locale);
             if (availability == TextToSpeech.LANG_AVAILABLE ||
                 availability == TextToSpeech.LANG_COUNTRY_AVAILABLE ||
                 availability == TextToSpeech.LANG_COUNTRY_VAR_AVAILABLE) {
-                mTts.setLanguage(locale);
+                getTts().setLanguage(locale);
                 return true;
             }
         }
         return false;
     }
 
-    /**
-     * Tests that {@link TextToSpeech#synthesizeToFile(String, java.util.HashMap, String)} produces
-     * a non-zero sized file.
-     * @throws InterruptedException
-     */
     public void testSynthesizeToFile() throws Exception {
         File sampleFile = new File(Environment.getExternalStorageDirectory(), SAMPLE_FILE_NAME);
         try {
             assertFalse(sampleFile.exists());
-            // use an utterance listener to determine when synthesizing is complete
-            HashMap<String, String> param = new HashMap<String,String>();
-            param.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, UTTERANCE);
-            UtteranceWaitListener listener = new UtteranceWaitListener(UTTERANCE);
-            mTts.setOnUtteranceCompletedListener(listener);
 
-            int result = mTts.synthesizeToFile(SAMPLE_TEXT, param, sampleFile.getPath());
-            assertEquals(TextToSpeech.SUCCESS, result);
+            int result = getTts().synthesizeToFile(SAMPLE_TEXT, createParams(),
+                    sampleFile.getPath());
+            assertEquals("synthesizeToFile() failed", TextToSpeech.SUCCESS, result);
 
-            assertTrue(listener.waitForComplete());
-            assertTrue(sampleFile.exists());
-            assertTrue(isMusicFile(sampleFile.getPath()));
-
+            assertTrue("synthesizeToFile() completion timeout", waitForUtterance());
+            assertTrue("synthesizeToFile() didn't produce a file", sampleFile.exists());
+            assertTrue("synthesizeToFile() produced a non-sound file",
+                    TextToSpeechWrapper.isSoundFile(sampleFile.getPath()));
         } finally {
-            deleteFile(sampleFile);
+            sampleFile.delete();
         }
     }
 
-    /**
-     * Determine if given file path is a valid, playable music file.
-     */
-    private boolean isMusicFile(String filePath) {
-        // use media player to play the file. If it succeeds with no exceptions, assume file is
-        //valid
-        try {
-            MediaPlayer mp = new MediaPlayer();
-            mp.setDataSource(filePath);
-            mp.prepare();
-            mp.start();
-            mp.stop();
-            return true;
-        } catch (Exception e) {
-            Log.e(LOG_TAG, "Exception while attempting to play music file", e);
-            return false;
-        }
+    public void testSpeak() throws Exception {
+        int result = getTts().speak(SAMPLE_TEXT, TextToSpeech.QUEUE_FLUSH, createParams());
+        assertEquals("speak() failed", TextToSpeech.SUCCESS, result);
+        assertTrue("speak() completion timeout", waitForUtterance());
     }
 
-    /**
-     * Deletes the file at given path
-     * @param sampleFilePath
-     */
-    private void deleteFile(File file) {
-        if (file != null && file.exists()) {
-            file.delete();
-        }
+    public void testGetEnginesIncludesDefault() throws Exception {
+        List<TextToSpeech.EngineInfo> engines = getTts().getEngines();
+        assertNotNull("getEngines() returned null", engines);
+        assertContainsEngine(getTts().getDefaultEngine(), engines);
     }
+
+    public void testGetEnginesIncludesMock() throws Exception {
+        List<TextToSpeech.EngineInfo> engines = getTts().getEngines();
+        assertNotNull("getEngines() returned null", engines);
+        assertContainsEngine(TextToSpeechWrapper.MOCK_TTS_ENGINE, engines);
+    }
+
+    private void assertContainsEngine(String engine, List<TextToSpeech.EngineInfo> engines) {
+        for (TextToSpeech.EngineInfo engineInfo : engines) {
+            if (engineInfo.name.equals(engine)) {
+                return;
+            }
+        }
+        fail("Engine " + engine + " not found");
+    }
+
+    private HashMap<String, String> createParams() {
+        HashMap<String, String> params = new HashMap<String,String>();
+        params.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, UTTERANCE_ID);
+        return params;
+    }
+
+    private boolean waitForUtterance() throws InterruptedException {
+        return mTts.waitForComplete(UTTERANCE_ID);
+    }
+
 }
diff --git a/tests/tests/speech/src/android/speech/tts/cts/TextToSpeechWrapper.java b/tests/tests/speech/src/android/speech/tts/cts/TextToSpeechWrapper.java
new file mode 100644
index 0000000..cba242f
--- /dev/null
+++ b/tests/tests/speech/src/android/speech/tts/cts/TextToSpeechWrapper.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2009 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 android.speech.tts.cts;
+
+import android.content.Context;
+import android.media.MediaPlayer;
+import android.speech.tts.TextToSpeech;
+import android.speech.tts.TextToSpeech.OnInitListener;
+import android.speech.tts.TextToSpeech.OnUtteranceCompletedListener;
+import android.util.Log;
+
+import java.util.HashSet;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.locks.Condition;
+import java.util.concurrent.locks.Lock;
+import java.util.concurrent.locks.ReentrantLock;
+
+/**
+ * Wrapper for {@link TextToSpeech} with some handy test functionality.
+ */
+public class TextToSpeechWrapper {
+    private static final String LOG_TAG = "TextToSpeechServiceTest";
+
+    public static final String MOCK_TTS_ENGINE = "com.android.cts.stub";
+
+    private final Context mContext;
+    private TextToSpeech mTts;
+    private final InitWaitListener mInitListener;
+    private final UtteranceWaitListener mUtteranceListener;
+
+    /** maximum time to wait for tts to be initialized */
+    private static final int TTS_INIT_MAX_WAIT_TIME = 30 * 1000;
+    /** maximum time to wait for speech call to be complete */
+    private static final int TTS_SPEECH_MAX_WAIT_TIME = 5 * 1000;
+
+    private TextToSpeechWrapper(Context context) {
+        mContext = context;
+        mInitListener = new InitWaitListener();
+        mUtteranceListener = new UtteranceWaitListener();
+    }
+
+    private boolean initTts() throws InterruptedException {
+        return initTts(new TextToSpeech(mContext, mInitListener));
+    }
+
+    private boolean initTts(String engine) throws InterruptedException {
+        return initTts(new TextToSpeech(mContext, mInitListener, engine));
+    }
+
+    private boolean initTts(TextToSpeech tts) throws InterruptedException {
+        mTts = tts;
+        if (!mInitListener.waitForInit()) {
+            return false;
+        }
+        mTts.setOnUtteranceCompletedListener(mUtteranceListener);
+        return true;
+    }
+
+    public boolean waitForComplete(String utteranceId) throws InterruptedException {
+        return mUtteranceListener.waitForComplete(utteranceId);
+    }
+
+    public TextToSpeech getTts() {
+        return mTts;
+    }
+
+    public void shutdown() {
+        mTts.shutdown();
+    }
+
+    public static TextToSpeechWrapper createTextToSpeechWrapper(Context context)
+            throws InterruptedException {
+        TextToSpeechWrapper wrapper = new TextToSpeechWrapper(context);
+        if (wrapper.initTts()) {
+            return wrapper;
+        } else {
+            return null;
+        }
+    }
+
+    public static TextToSpeechWrapper createTextToSpeechMockWrapper(Context context)
+            throws InterruptedException {
+        TextToSpeechWrapper wrapper = new TextToSpeechWrapper(context);
+        if (wrapper.initTts(MOCK_TTS_ENGINE)) {
+            return wrapper;
+        } else {
+            return null;
+        }
+    }
+
+    /**
+     * Listener for waiting for TTS engine initialization completion.
+     */
+    private static class InitWaitListener implements OnInitListener {
+        private final Lock mLock = new ReentrantLock();
+        private final Condition mDone  = mLock.newCondition();
+        private Integer mStatus = null;
+
+        public void onInit(int status) {
+            mLock.lock();
+            try {
+                mStatus = new Integer(status);
+                mDone.signal();
+            } finally {
+                mLock.unlock();
+            }
+        }
+
+        public boolean waitForInit() throws InterruptedException {
+            long timeOutNanos = TimeUnit.MILLISECONDS.toNanos(TTS_INIT_MAX_WAIT_TIME);
+            mLock.lock();
+            try {
+                while (mStatus == null) {
+                    if (timeOutNanos <= 0) {
+                        return false;
+                    }
+                    timeOutNanos = mDone.awaitNanos(timeOutNanos);
+                }
+                return mStatus == TextToSpeech.SUCCESS;
+            } finally {
+                mLock.unlock();
+            }
+        }
+    }
+
+    /**
+     * Listener for waiting for utterance completion.
+     */
+    private static class UtteranceWaitListener implements OnUtteranceCompletedListener {
+        private final Lock mLock = new ReentrantLock();
+        private final Condition mDone  = mLock.newCondition();
+        private final HashSet<String> mCompletedUtterances = new HashSet<String>();
+
+        public void onUtteranceCompleted(String utteranceId) {
+            mLock.lock();
+            try {
+                mCompletedUtterances.add(utteranceId);
+                mDone.signal();
+            } finally {
+                mLock.unlock();
+            }
+        }
+
+        public boolean waitForComplete(String utteranceId)
+                throws InterruptedException {
+            long timeOutNanos = TimeUnit.MILLISECONDS.toNanos(TTS_INIT_MAX_WAIT_TIME);
+            mLock.lock();
+            try {
+                while (!mCompletedUtterances.remove(utteranceId)) {
+                    if (timeOutNanos <= 0) {
+                        return false;
+                    }
+                    timeOutNanos = mDone.awaitNanos(timeOutNanos);
+                }
+                return true;
+            } finally {
+                mLock.unlock();
+            }
+        }
+    }
+
+    /**
+     * Determines if given file path is a valid, playable music file.
+     */
+    public static boolean isSoundFile(String filePath) {
+        // use media player to play the file. If it succeeds with no exceptions, assume file is
+        //valid
+        MediaPlayer mp = null;
+        try {
+            mp = new MediaPlayer();
+            mp.setDataSource(filePath);
+            mp.prepare();
+            mp.start();
+            mp.stop();
+            return true;
+        } catch (Exception e) {
+            Log.e(LOG_TAG, "Exception while attempting to play music file", e);
+            return false;
+        } finally {
+            if (mp != null) {
+                mp.release();
+            }
+        }
+    }
+
+}
diff --git a/tests/tests/text/src/android/text/format/cts/DateFormatTest.java b/tests/tests/text/src/android/text/format/cts/DateFormatTest.java
index f24117e..5d92a18 100644
--- a/tests/tests/text/src/android/text/format/cts/DateFormatTest.java
+++ b/tests/tests/text/src/android/text/format/cts/DateFormatTest.java
@@ -178,7 +178,7 @@
 
     @TestTargetNew(level = TestLevel.ADDITIONAL)
     public void test2038() {
-        Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
+        Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("GMT+00:00"));
 
         calendar.setTimeInMillis(((long) Integer.MIN_VALUE + Integer.MIN_VALUE) * 1000L);
         assertEquals("Sun Nov 24 17:31:44 GMT+00:00 1833",
diff --git a/tests/tests/text/src/android/text/format/cts/TimeTest.java b/tests/tests/text/src/android/text/format/cts/TimeTest.java
index a8f2acd..0fb3f2a 100644
--- a/tests/tests/text/src/android/text/format/cts/TimeTest.java
+++ b/tests/tests/text/src/android/text/format/cts/TimeTest.java
@@ -584,6 +584,31 @@
         assertTrue(Time.compare(a, a) == 0);
     }
 
+    public void testCompareNullFailure() throws Exception {
+        Time a = new Time(Time.TIMEZONE_UTC);
+
+        try {
+            Time.compare(a, null);
+            fail("Should throw NullPointerException on second argument");
+        } catch (NullPointerException e) {
+            // pass
+        }
+
+        try {
+            Time.compare(null, a);
+            fail("Should throw NullPointerException on first argument");
+        } catch (NullPointerException e) {
+            // pass
+        }
+
+        try {
+            Time.compare(null, null);
+            fail("Should throw NullPointerException because both args are null");
+        } catch (NullPointerException e) {
+            // pass
+        }
+    }
+
     @TestTargetNew(
         level = TestLevel.COMPLETE,
         method = "format",
diff --git a/tests/tests/text/src/android/text/method/cts/ArrowKeyMovementMethodTest.java b/tests/tests/text/src/android/text/method/cts/ArrowKeyMovementMethodTest.java
index a92f323..ba2bcdd 100644
--- a/tests/tests/text/src/android/text/method/cts/ArrowKeyMovementMethodTest.java
+++ b/tests/tests/text/src/android/text/method/cts/ArrowKeyMovementMethodTest.java
@@ -70,7 +70,6 @@
         mArrowKeyMovementMethod = new ArrowKeyMovementMethod();
 
         initTextViewWithNullLayout();
-        mEditable = (Editable) mTextView.getText();
 
         getInstrumentation().runOnMainSync(new Runnable() {
             public void run() {
@@ -197,8 +196,6 @@
             + "document about the behaviour of this method.")
     public void testOnTakeFoucusWithNullLayout() {
         initTextViewWithNullLayout();
-        mEditable = (Editable) mTextView.getText();
-
         assertSelectEndOfContent();
     }
 
@@ -214,7 +211,6 @@
             + "Spannable, int)} when the params view or text is null")
     public void testOnTakeFocusWithNullParameters() {
         initTextViewWithNullLayout();
-        mEditable = (Editable) mTextView.getText();
         try {
             mArrowKeyMovementMethod.onTakeFocus(null, mEditable, View.FOCUS_DOWN);
             fail("The method did not throw NullPointerException when param textView is null.");
@@ -580,8 +576,6 @@
             + "Spannable, int, KeyEvent)} when the view does not get layout")
     public void testOnKeyDownWithNullLayout() {
         initTextViewWithNullLayout();
-        mEditable = (Editable) mTextView.getText();
-
         try {
             mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable, KeyEvent.KEYCODE_DPAD_RIGHT,
                     null);
@@ -698,7 +692,6 @@
             + "Spannable, MotionEvent)} when the view does not get layout")
     public void testOnTouchEventWithNullLayout() {
         initTextViewWithNullLayout();
-        mEditable = (Editable) mTextView.getText();
         mTextView.setFocusable(true);
         mTextView.requestFocus();
         assertTrue(mTextView.isFocused());
@@ -738,7 +731,6 @@
             + "Spannable, MotionEvent)} when the params view, buffer or event is null")
     public void testOnTouchEventWithNullParameters() {
         initTextViewWithNullLayout();
-        mEditable = (Editable) mTextView.getText();
         try {
             mArrowKeyMovementMethod.onTouchEvent(null, mEditable,
                     MotionEvent.obtain(0, 0, 0, 1, 1, 0));
@@ -812,7 +804,6 @@
                 MotionEvent.obtain(0, 0, 0, 1, 1, 0)));
 
         initTextViewWithNullLayout();
-        mEditable = (Editable) mTextView.getText();
 
         assertFalse(mArrowKeyMovementMethod.onTrackballEvent(mTextView, mEditable,
                 MotionEvent.obtain(0, 0, 0, 1, 1, 0)));
@@ -846,10 +837,411 @@
         assertFalse(method.onKeyUp(view, spannable, KeyEvent.KEYCODE_0, null));
     }
 
+    private static final String TEXT_WORDS =
+            "Lorem ipsum; dolor sit \u00e4met, conse\u0ca0_\u0ca0ctetur?       Adipiscing"
+            + ".elit.integ\u00e9r. Etiam    tristique\ntortor nec   ?:?    \n\n"
+            + "lectus porta consequ\u00e4t...  LOReM iPSuM";
+
+    @UiThreadTest
+    public void testFollowingWordStartToEnd() {
+
+        // NOTE: there seems to be much variation in how word boundaries are
+        // navigated; the behaviors asserted here were derived from Google
+        // Chrome 10.0.648.133 beta.
+
+        initTextViewWithNullLayout(TEXT_WORDS);
+
+        // |Lorem ipsum; dolor sit $met,
+        Selection.setSelection(mEditable, 0);
+        assertSelection(0);
+
+        // Lorem| ipsum; dolor sit $met,
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(5);
+
+        // Lorem ipsum|; dolor sit $met,
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(11);
+
+        // Lorem ipsum; dolor| sit $met,
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(18);
+
+        // Lorem ipsum; dolor sit| $met,
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(22);
+
+        // $met|, conse$_$ctetur$       Adipiscing.elit.integ$r.
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(27);
+
+        // $met, conse$_$ctetur|$       Adipiscing.elit.integ$r.
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(43);
+
+        // TODO: enable these two additional word breaks when implemented
+//        // $met, conse$_$ctetur$       Adipiscing|.elit.integ$r.
+//        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+//        assertSelection(61);
+//
+//        // $met, conse$_$ctetur$       Adipiscing.elit|.integ$r.
+//        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+//        assertSelection(66);
+
+        // $met, conse$_$ctetur$       Adipiscing.elit.integ$r|.
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(74);
+
+        // integ$r. Etiam|    tristique$tortor nec   ?:?    $$lectus porta
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(81);
+
+        // integ$r. Etiam    tristique|$tortor nec   ?:?    $$lectus porta
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(94);
+
+        // integ$r. Etiam    tristique$tortor| nec   ?:?    $$lectus porta
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(101);
+
+        // integ$r. Etiam    tristique$tortor nec|   ?:?    $$lectus porta
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(105);
+
+        // integ$r. Etiam    tristique$tortor nec   ?:?    $$lectus| porta
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(123);
+
+        // $$lectus porta| consequ$t...  LOReM iPSuM
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(129);
+
+        // $$lectus porta consequ$t|...  LOReM iPSuM
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(139);
+
+        // $$lectus porta consequ$t...  LOReM| iPSuM
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(149);
+
+        // $$lectus porta consequ$t...  LOReM iPSuM|
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(155);
+
+        // keep trying to push beyond end, which should fail
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(155);
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(155);
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(155);
+
+    }
+
+    @UiThreadTest
+    public void testPrecedingWordEndToStart() {
+
+        // NOTE: there seems to be much variation in how word boundaries are
+        // navigated; the behaviors asserted here were derived from Google
+        // Chrome 10.0.648.133 beta.
+
+        initTextViewWithNullLayout(TEXT_WORDS);
+
+        // $$lectus porta consequ$t...  LOReM iPSuM|
+        Selection.setSelection(mEditable, mEditable.length());
+        assertSelection(155);
+
+        // $$lectus porta consequ$t...  LOReM |iPSuM
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(150);
+
+        // $$lectus porta consequ$t...  |LOReM iPSuM
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(144);
+
+        // $$lectus porta |consequ$t...  LOReM iPSuM
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(130);
+
+        // $$lectus |porta consequ$t...  LOReM iPSuM
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(124);
+
+        // integ$r. Etiam    tristique$tortor nec   ?:?    $$|lectus
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(117);
+
+        // integ$r. Etiam    tristique$tortor |nec   ?:?    $$lectus
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(102);
+
+        // integ$r. Etiam    tristique$|tortor nec   ?:?    $$lectus
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(95);
+
+        // integ$r. Etiam    |tristique$tortor nec   ?:?    $$lectus
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(85);
+
+        // integ$r. |Etiam    tristique$tortor nec   ?:?    $$lectus
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(76);
+
+        // TODO: enable these two additional word breaks when implemented
+//        // dolor sit $met, conse$_$ctetur$       Adipiscing.elit.|integ$r.
+//        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+//        assertSelection(67);
+//
+//        // dolor sit $met, conse$_$ctetur$       Adipiscing.|elit.integ$r.
+//        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+//        assertSelection(62);
+
+        // dolor sit $met, conse$_$ctetur$       |Adipiscing.elit.integ$r.
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(51);
+
+        // dolor sit $met, |conse$_$ctetur$       Adipiscing.elit.integ$r.
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(29);
+
+        // dolor sit |$met, conse$_$ctetur$       Adipiscing.elit.integ$r.
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(23);
+
+        // Lorem ipsum; dolor |sit $met
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(19);
+
+        // Lorem ipsum; |dolor sit $met
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(13);
+
+        // Lorem |ipsum; dolor sit $met
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(6);
+
+        // |Lorem ipsum; dolor sit $met
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(0);
+
+        // keep trying to push before beginning, which should fail
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(0);
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(0);
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(0);
+
+    }
+
+    private static final String TEXT_WORDS_WITH_NUMBERS =
+            "Lorem ipsum123,456.90   dolor sit.. 4-0.0=2 ADipiscing4";
+
+    @UiThreadTest
+    public void testFollowingWordStartToEndWithNumbers() {
+
+        initTextViewWithNullLayout(TEXT_WORDS_WITH_NUMBERS);
+
+        // |Lorem ipsum123,456.90   dolor sit.. 4-0.0=2 ADipiscing4
+        Selection.setSelection(mEditable, 0);
+        assertSelection(0);
+
+        // Lorem| ipsum123,456.90   dolor sit.. 4-0.0=2 ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(5);
+
+        // Lorem ipsum123,456.90|   dolor sit.. 4-0.0=2 ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(21);
+
+        // Lorem ipsum123,456.90   dolor| sit.. 4-0.0=2 ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(29);
+
+        // Lorem ipsum123,456.90   dolor sit|.. 4-0.0=2 ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(33);
+
+        // Lorem ipsum123,456.90   dolor sit.. 4|-0.0=2 ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(37);
+
+        // Lorem ipsum123,456.90   dolor sit.. 4-0.0|=2 ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(41);
+
+        // Lorem ipsum123,456.90   dolor sit.. 4-0.0=2| ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(43);
+
+        // Lorem ipsum123,456.90   dolor sit.. 4-0.0=2 ADipiscing4|
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(55);
+
+        // keep trying to push beyond end, which should fail
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(55);
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(55);
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(55);
+
+    }
+
+    @UiThreadTest
+    public void testFollowingWordEndToStartWithNumbers() {
+
+        initTextViewWithNullLayout(TEXT_WORDS_WITH_NUMBERS);
+
+        // Lorem ipsum123,456.90   dolor sit.. 4-0.0=2 ADipiscing4|
+        Selection.setSelection(mEditable, mEditable.length());
+        assertSelection(55);
+
+        // Lorem ipsum123,456.90   dolor sit.. 4-0.0=2 |ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(44);
+
+        // Lorem ipsum123,456.90   dolor sit.. 4-0.0=|2 ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(42);
+
+        // Lorem ipsum123,456.90   dolor sit.. 4-|0.0=2 ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(38);
+
+        // Lorem ipsum123,456.90   dolor sit.. |4-0.0=2 ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(36);
+
+        // Lorem ipsum123,456.90   dolor |sit.. 4-0.0=2 ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(30);
+
+        // Lorem ipsum123,456.90   |dolor sit.. 4-0.0=2 ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(24);
+
+        // Lorem |ipsum123,456.90   dolor sit.. 4-0.0=2 ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(6);
+
+        // |Lorem ipsum123,456.90   dolor sit.. 4-0.0=2 ADipiscing4
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(0);
+
+        // keep trying to push before beginning, which should fail
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(0);
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(0);
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(0);
+
+    }
+
+    private static final String TEXT_WORDS_WITH_1CHAR_FINAL_WORD = "abc d";
+
+    @UiThreadTest
+    public void testFollowingWordStartToEndWithOneCharFinalWord() {
+
+        initTextViewWithNullLayout(TEXT_WORDS_WITH_1CHAR_FINAL_WORD);
+
+        // |abc d
+        Selection.setSelection(mEditable, 0);
+        assertSelection(0);
+
+        // abc| d
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(3);
+
+        // abc d|
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+        assertSelection(mEditable.length());
+
+    }
+
+    @UiThreadTest
+    public void testFollowingWordEndToStartWithOneCharFinalWord() {
+
+        initTextViewWithNullLayout(TEXT_WORDS_WITH_1CHAR_FINAL_WORD);
+
+        // abc d|
+        Selection.setSelection(mEditable, mEditable.length());
+        assertSelection(5);
+
+        // abc |d
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(4);
+
+        // |abc d
+        assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+        assertSelection(0);
+
+    }
+
+    @UiThreadTest
+    public void testMovementFromMiddleOfWord() {
+
+        initTextViewWithNullLayout("before word after");
+        checkMoveFromInsideWord(7, 10);
+
+        // Surrogate characters: bairkan should be considered as a standard letter
+        final String BAIRKAN = "\uD800\uDF31";
+
+        initTextViewWithNullLayout("before wo" + BAIRKAN + "rd after");
+        checkMoveFromInsideWord(7, 12);
+
+        initTextViewWithNullLayout("before " + BAIRKAN + BAIRKAN + "xx after");
+        checkMoveFromInsideWord(7, 12);
+
+        initTextViewWithNullLayout("before xx" + BAIRKAN + BAIRKAN + " after");
+        checkMoveFromInsideWord(7, 12);
+
+        initTextViewWithNullLayout("before x" + BAIRKAN + "x" + BAIRKAN + " after");
+        checkMoveFromInsideWord(7, 12);
+
+        initTextViewWithNullLayout("before " + BAIRKAN + "x" + BAIRKAN + "x after");
+        checkMoveFromInsideWord(7, 12);
+
+        initTextViewWithNullLayout("before " + BAIRKAN + BAIRKAN + BAIRKAN + " after");
+        checkMoveFromInsideWord(7, 12);
+    }
+
+    private void checkMoveFromInsideWord(int wordStart, int wordEnd) {
+
+        CharSequence text = mTextView.getText();
+
+        // Check following always goes at the end of the word
+        for (int offset = wordStart; offset != wordEnd + 1; offset++) {
+            // Skip positions located between a pair of surrogate characters
+            if (Character.isSurrogatePair(text.charAt(offset - 1), text.charAt(offset))) {
+                continue;
+            }
+            Selection.setSelection(mEditable, offset);
+            assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_RIGHT));
+            assertSelection(wordEnd + 1);
+        }
+
+        // Check preceding always goes at the beginning of the word
+        for (int offset = wordEnd + 1; offset != wordStart; offset--) {
+            if (Character.isSurrogatePair(text.charAt(offset - 1), text.charAt(offset))) {
+                continue;
+            }
+            Selection.setSelection(mEditable, offset);
+            assertTrue(pressCtrlChord(KeyEvent.KEYCODE_DPAD_LEFT));
+            assertSelection(wordStart);
+        }
+    }
+
     private void initTextViewWithNullLayout() {
+        initTextViewWithNullLayout(THREE_LINES_TEXT);
+    }
+
+    private void initTextViewWithNullLayout(CharSequence text) {
         mTextView = new TextView(getActivity());
-        mTextView.setText(THREE_LINES_TEXT, BufferType.EDITABLE);
+        mTextView.setText(text, BufferType.EDITABLE);
         assertNull(mTextView.getLayout());
+        mEditable = (Editable) mTextView.getText();
     }
 
     private void pressMetaKey(int metakey, int expectedState) {
@@ -873,13 +1265,38 @@
         pressMetaKey(KeyEvent.KEYCODE_ALT_LEFT, MetaKeyKeyListener.META_ALT_ON);
     }
 
-    private void assertSelection(int position) {
-        assertSelection(position, position);
+    private boolean pressCtrlChord(int keyCode) {
+        final long now = System.currentTimeMillis();
+        final KeyEvent keyEvent = new KeyEvent(
+                now, now, KeyEvent.ACTION_DOWN, keyCode, 0, KeyEvent.META_CTRL_LEFT_ON);
+        return mArrowKeyMovementMethod.onKeyDown(mTextView, mEditable, keyCode, keyEvent);
     }
 
-    private void assertSelection(int start, int end) {
-        assertEquals(start, Selection.getSelectionStart(mEditable));
-        assertEquals(end, Selection.getSelectionEnd(mEditable));
+    private void assertSelection(int expectedPosition) {
+        assertSelection(expectedPosition, expectedPosition);
+    }
+
+    private void assertSelection(int expectedStart, int expectedEnd) {
+        final int actualStart = Selection.getSelectionStart(mEditable);
+        final int actualEnd = Selection.getSelectionEnd(mEditable);
+
+        assertCharSequenceIndexEquals(mEditable, expectedStart, actualStart);
+        assertCharSequenceIndexEquals(mEditable, expectedEnd, actualEnd);
+    }
+
+    private static void assertCharSequenceIndexEquals(CharSequence text, int expected, int actual) {
+        final String message = "expected <" + getCursorSnippet(text, expected) + "> but was <"
+                + getCursorSnippet(text, actual) + ">";
+        assertEquals(message, expected, actual);
+    }
+
+    private static String getCursorSnippet(CharSequence text, int index) {
+        if (index >= 0 && index < text.length()) {
+            return text.subSequence(Math.max(0, index - 5), index) + "|"
+                    + text.subSequence(index, Math.min(text.length() - 1, index + 5));
+        } else {
+            return null;
+        }
     }
 
     private void assertSelectEndOfContent() {
diff --git a/tests/tests/text/src/android/text/method/cts/WordIteratorTest.java b/tests/tests/text/src/android/text/method/cts/WordIteratorTest.java
new file mode 100644
index 0000000..2b1f461
--- /dev/null
+++ b/tests/tests/text/src/android/text/method/cts/WordIteratorTest.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2011 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 android.text.method.cts;
+
+import android.text.method.WordIterator;
+
+import java.text.BreakIterator;
+
+import junit.framework.TestCase;
+
+public class WordIteratorTest extends TestCase {
+
+    WordIterator wi = new WordIterator();
+
+    private void checkIsWordWithSurrogate(int beginning, int end, int surrogateIndex) {
+        for (int i = beginning; i <= end; i++) {
+            if (i == surrogateIndex) continue;
+            assertEquals(beginning, wi.getBeginning(i));
+            assertEquals(end, wi.getEnd(i));
+        }
+    }
+
+    private void checkIsWord(int beginning, int end) {
+        checkIsWordWithSurrogate(beginning, end, -1);
+    }
+
+    private void checkIsNotWord(int beginning, int end) {
+        for (int i = beginning; i <= end; i++) {
+            assertEquals(BreakIterator.DONE, wi.getBeginning(i));
+            assertEquals(BreakIterator.DONE, wi.getEnd(i));
+        }
+    }
+
+    public void testEmptyString() {
+        wi.setCharSequence("");
+        assertEquals(BreakIterator.DONE, wi.following(0));
+        assertEquals(BreakIterator.DONE, wi.preceding(0));
+
+        assertEquals(BreakIterator.DONE, wi.getBeginning(0));
+        assertEquals(BreakIterator.DONE, wi.getEnd(0));
+    }
+
+    public void testOneWord() {
+        wi.setCharSequence("I");
+        checkIsWord(0, 1);
+
+        wi.setCharSequence("am");
+        checkIsWord(0, 2);
+
+        wi.setCharSequence("zen");
+        checkIsWord(0, 3);
+    }
+
+    public void testSpacesOnly() {
+        wi.setCharSequence(" ");
+        checkIsNotWord(0, 1);
+
+        wi.setCharSequence(", ");
+        checkIsNotWord(0, 2);
+
+        wi.setCharSequence(":-)");
+        checkIsNotWord(0, 3);
+    }
+
+    public void testBeginningEnd() {
+        wi.setCharSequence("Well hello,   there! ");
+        //                  0123456789012345678901
+        checkIsWord(0, 4);
+        checkIsWord(5, 10);
+        checkIsNotWord(11, 13);
+        checkIsWord(14, 19);
+        checkIsNotWord(20, 21);
+
+        wi.setCharSequence("  Another - sentence");
+        //                  012345678901234567890
+        checkIsNotWord(0, 1);
+        checkIsWord(2, 9);
+        checkIsNotWord(10, 11);
+        checkIsWord(12, 20);
+
+        wi.setCharSequence("This is \u0644\u0627 tested"); // Lama-aleph
+        //                  012345678     9     01234567
+        checkIsWord(0, 4);
+        checkIsWord(5, 7);
+        checkIsWord(8, 10);
+        checkIsWord(11, 17);
+    }
+
+    public void testSurrogate() {
+        final String BAIRKAN = "\uD800\uDF31";
+
+        wi.setCharSequence("one we" + BAIRKAN + "ird word");
+        //                  012345    67         890123456
+
+        checkIsWord(0, 3);
+        // Skip index 7 (there is no point in starting between the two surrogate characters)
+        checkIsWordWithSurrogate(4, 11, 7);
+        checkIsWord(12, 16);
+
+        wi.setCharSequence("one " + BAIRKAN + "xxx word");
+        //                  0123    45         678901234
+
+        checkIsWord(0, 3);
+        checkIsWordWithSurrogate(4, 9, 5);
+        checkIsWord(10, 14);
+
+        wi.setCharSequence("one xxx" + BAIRKAN + " word");
+        //                  0123456    78         901234
+
+        checkIsWord(0, 3);
+        checkIsWordWithSurrogate(4, 9, 8);
+        checkIsWord(10, 14);
+    }
+}
diff --git a/tests/tests/theme/Android.mk b/tests/tests/theme/Android.mk
new file mode 100644
index 0000000..b28e6b3
--- /dev/null
+++ b/tests/tests/theme/Android.mk
@@ -0,0 +1,34 @@
+# Copyright (C) 2011 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.
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+# don't include this package in any target
+LOCAL_MODULE_TAGS := optional
+# and when built explicitly put it in the data partition
+LOCAL_MODULE_PATH := $(TARGET_OUT_DATA_APPS)
+
+LOCAL_JAVA_LIBRARIES := android.test.runner
+
+# Include all test java files.
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
+
+LOCAL_PACKAGE_NAME := CtsThemeTestCases
+
+LOCAL_MODULE_TAGS := tests
+
+LOCAL_INSTRUMENTATION_FOR := CtsTestStubs
+
+include $(BUILD_PACKAGE)
diff --git a/tests/tests/theme/AndroidManifest.xml b/tests/tests/theme/AndroidManifest.xml
new file mode 100644
index 0000000..55afc7d
--- /dev/null
+++ b/tests/tests/theme/AndroidManifest.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2011 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.
+-->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.cts.theme">
+
+    <!-- We add an application tag here just so that we can indicate that
+         this package needs to link against the android.test library,
+         which is needed when building test cases. -->
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+  <instrumentation android:name="android.test.InstrumentationCtsTestRunner"
+      android:targetPackage="com.android.cts.stub"
+      android:label="CTS tests for themes">
+  </instrumentation>
+
+</manifest>
diff --git a/tests/tests/theme/src/android/theme/cts/ActivitySnapshotTests.java b/tests/tests/theme/src/android/theme/cts/ActivitySnapshotTests.java
new file mode 100644
index 0000000..0e93a75
--- /dev/null
+++ b/tests/tests/theme/src/android/theme/cts/ActivitySnapshotTests.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+ * This class performs both the generation and testing for all of the tests
+ * that take a snapshot of an entire activity and compare against a known-good version.
+ */
+public class ActivitySnapshotTests
+        extends ActivityInstrumentationTestCase2<SnapshotActivity> implements TestReset {
+    /**
+     * Creates an {@link ActivityInstrumentationTestCase2}
+     * for the {@link SnapshotActivity} activity.
+     */
+    public ActivitySnapshotTests() {
+        super(SnapshotActivity.class);
+    }
+
+    /**
+     * Generates the master versions of the bitmaps for the activity tests
+     * in the normal mode.
+     */
+    public void generateActivityBitmaps() {
+        ActivitySnapshotTester tester = new ActivitySnapshotTester(this, false);
+        tester.genOrTestActivityBitmaps(true, true);
+        tester.genOrTestActivityBitmaps(true, false);
+    }
+
+    /**
+     * Runs the activity snapshot tests.
+     */
+    public void testActivityBitmaps() {
+        ActivitySnapshotTester tester = new ActivitySnapshotTester(this, false);
+        tester.genOrTestActivityBitmaps(false, true);
+        tester.genOrTestActivityBitmaps(false, false);
+    }
+
+    public void reset() {
+        try {
+            tearDown();
+            setUp();
+        } catch (Exception e) {
+            fail("Failed at tearing down the activity so we can start a new one.");
+        }
+    }
+}
diff --git a/tests/tests/theme/src/android/theme/cts/SplitActivitySnapshotTests.java b/tests/tests/theme/src/android/theme/cts/SplitActivitySnapshotTests.java
new file mode 100644
index 0000000..9a71a6c
--- /dev/null
+++ b/tests/tests/theme/src/android/theme/cts/SplitActivitySnapshotTests.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+ * This class performs both the generation and testing for all of the tests
+ * that take a snapshot of an entire activity and compare against a known-good version.
+ *
+ * Note that this class is essentially duplicated from {@link ActivitySnapshotTests}.
+ * This unfortunate situation occurs because taking tests with a SplitActionBar
+ * requires setting uiOptions on an activity in the AndroidManifest.xml. Since
+ * this class requires an activity via generics, there has to be two separate
+ * classes ({@link ActivitySnapshotTests} and this one) so that the tests can
+ * be run both in normal mode and SplitActionBar mode.
+ */
+public class SplitActivitySnapshotTests
+        extends ActivityInstrumentationTestCase2<SplitSnapshotActivity> implements TestReset {
+    /**
+     * Creates an {@link ActivityInstrumentationTestCase2}
+     * for the {@link SplitSnapshotActivity} activity.
+     */
+    public SplitActivitySnapshotTests() {
+        super(SplitSnapshotActivity.class);
+    }
+
+    /**
+     * Generates the master versions of the bitmaps for the activity tests
+     * in the normal mode.
+     */
+    public void generateActivityBitmaps() {
+        ActivitySnapshotTester tester = new ActivitySnapshotTester(this, true);
+        tester.genOrTestActivityBitmaps(true, true);
+        tester.genOrTestActivityBitmaps(true, false);
+    }
+
+    /**
+     * Runs the activity snapshot tests.
+     */
+    public void testActivityBitmaps() {
+        ActivitySnapshotTester tester = new ActivitySnapshotTester(this, true);
+        tester.genOrTestActivityBitmaps(false, true);
+        tester.genOrTestActivityBitmaps(false, false);
+    }
+
+    public void reset() {
+        try {
+            tearDown();
+            setUp();
+        } catch (Exception e) {
+            fail("Failed at tearing down the activity so we can start a new one.");
+        }
+    }
+}
diff --git a/tests/tests/theme/src/android/theme/cts/ThemeGenerator.java b/tests/tests/theme/src/android/theme/cts/ThemeGenerator.java
new file mode 100644
index 0000000..4fe2a25
--- /dev/null
+++ b/tests/tests/theme/src/android/theme/cts/ThemeGenerator.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.app.Instrumentation;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+ * This class generates the masters for the theme tests that
+ * takes snapshots of views (typically widgets such as buttons, etc).
+ */
+public class ThemeGenerator extends ActivityInstrumentationTestCase2<ThemeTestGeneratorActivity> {
+    /**
+     * Creates an {@link ActivityInstrumentationTestCase2}
+     * for the {@link ThemeTestGeneratorActivity} activity.
+     */
+    public ThemeGenerator() {
+        super(ThemeTestGeneratorActivity.class);
+    }
+
+    /**
+     * Generates the master bitmaps for all of the themes. Since it is not named "test something"
+     * it is not run by CTS by default. However, you can run it via am instrument by specifying
+     * the method name.
+     */
+    public void generateThemeBitmaps() {
+        ThemeInfo[] themes = ThemeTests.getThemes();
+
+        for (ThemeInfo theme : themes) {
+            generateThemeBitmap(theme.getResourceId(), theme.getThemeName(),
+                    ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+            generateThemeBitmap(theme.getResourceId(), theme.getThemeName(),
+                    ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+        }
+    }
+
+    private void generateThemeBitmap(int resourceId, String themeName, int orientation) {
+        Instrumentation instrumentation = getInstrumentation();
+
+        Intent intent = new Intent();
+        intent.putExtra(ThemeTests.EXTRA_THEME_ID, resourceId);
+        intent.putExtra(ThemeTests.EXTRA_THEME_NAME, themeName);
+        intent.putExtra(ThemeTests.EXTRA_ORIENTATION, orientation);
+        setActivityIntent(intent);
+
+        final ThemeTestGeneratorActivity activity = getActivity();
+
+        activity.runOnUiThread(new Runnable() {
+           public void run() {
+               activity.generateTests();
+           }
+        });
+
+        instrumentation.waitForIdleSync();
+
+        try {
+            tearDown();
+            setUp();
+        } catch (Exception e) {
+            fail("Failed at tearing down the activity so we can start a new one.");
+        }
+    }
+}
diff --git a/tests/tests/theme/src/android/theme/cts/ThemeTest.java b/tests/tests/theme/src/android/theme/cts/ThemeTest.java
new file mode 100644
index 0000000..4871a0e
--- /dev/null
+++ b/tests/tests/theme/src/android/theme/cts/ThemeTest.java
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2011 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 android.theme.cts;
+
+import android.app.Instrumentation;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.test.ActivityInstrumentationTestCase2;
+
+/**
+ * This class runs the theme tests that takes snapshots of views (typically widgets
+ * such as buttons, etc).
+ */
+public class ThemeTest extends ActivityInstrumentationTestCase2<ThemeTestRunnerActivity> {
+    /**
+     * Creates an {@link ActivityInstrumentationTestCase2}
+     * for the {@link ThemeTestRunnerActivity} activity.
+     */
+    public ThemeTest() {
+        super(ThemeTestRunnerActivity.class);
+    }
+
+    public void testThemes() {
+        ThemeInfo[] themes = ThemeTests.getThemes();
+
+        for (ThemeInfo theme : themes) {
+            runThemeTest(theme.getResourceId(), theme.getThemeName(),
+                    ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
+            runThemeTest(theme.getResourceId(), theme.getThemeName(),
+                    ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
+        }
+    }
+
+    /**
+     * Runs the theme test given the appropriate theme resource id and theme name.
+     * @param resourceId Resource ID of the theme being tested.
+     * @param themeName Name of the theme being tested, e.g., "holo", "holo_light", etc
+     */
+    private void runThemeTest(int resourceId, String themeName, int orientation) {
+        Instrumentation instrumentation = getInstrumentation();
+
+        Intent intent = new Intent();
+        intent.putExtra(ThemeTests.EXTRA_THEME_ID, resourceId);
+        intent.putExtra(ThemeTests.EXTRA_THEME_NAME, themeName);
+        intent.putExtra(ThemeTests.EXTRA_ORIENTATION, orientation);
+        setActivityIntent(intent);
+
+        final ThemeTestRunnerActivity activity = getActivity();
+
+        activity.runOnUiThread(new Runnable() {
+           public void run() {
+               activity.runTests();
+           }
+        });
+
+        instrumentation.waitForIdleSync();
+
+        try {
+            tearDown();
+            setUp();
+        } catch (Exception e) {
+            fail("Failed at tearing down the activity so we can start a new one.");
+        }
+    }
+}
diff --git a/tests/tests/view/src/android/view/cts/AccessibilityEventTest.java b/tests/tests/view/src/android/view/cts/AccessibilityEventTest.java
index f7c1e7a..fd53ff3 100644
--- a/tests/tests/view/src/android/view/cts/AccessibilityEventTest.java
+++ b/tests/tests/view/src/android/view/cts/AccessibilityEventTest.java
@@ -20,6 +20,7 @@
 import android.os.Parcel;
 import android.test.suitebuilder.annotation.MediumTest;
 import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityRecord;
 
 import java.lang.reflect.Field;
 import java.lang.reflect.Modifier;
@@ -34,10 +35,10 @@
 public class AccessibilityEventTest extends TestCase {
 
     /** The number of properties of the {@link AccessibilityEvent} class. */
-    private static final int NON_STATIC_FIELD_COUNT = 16;
+    private static final int NON_STATIC_FIELD_COUNT = 26;
 
     @MediumTest
-    public void testMarshalling() throws Exception {
+    public void testMarshaling() throws Exception {
         // no new fields, so we are testing marshaling of all such
         assertNoNewNonStaticFieldsAdded();
 
@@ -90,13 +91,17 @@
     private void assertNoNewNonStaticFieldsAdded() {
         int nonStaticFieldCount = 0;
 
-        for (Field field : AccessibilityEvent.class.getDeclaredFields()) {
-            if ((field.getModifiers() & Modifier.STATIC) == 0) {
-                nonStaticFieldCount++;
+        Class<?> clazz = AccessibilityEvent.class;
+        while (clazz != null) {
+            for (Field field : clazz.getDeclaredFields()) {
+                if ((field.getModifiers() & Modifier.STATIC) == 0) {
+                    nonStaticFieldCount++;
+                }
             }
+            clazz = clazz.getSuperclass();
         }
 
-        String message = "New fields have been added, so add code to test marchalling them.";
+        String message = "New fields have been added, so add code to test marshaling them.";
         assertEquals(message, NON_STATIC_FIELD_COUNT, nonStaticFieldCount);
     }
 
@@ -123,6 +128,23 @@
         sentEvent.setPassword(true);
         sentEvent.setRemovedCount(1);
         sentEvent.getText().add("Foo");
+
+        AccessibilityRecord record = AccessibilityRecord.obtain();
+        record.setAddedCount(1);
+        record.setBeforeText("BeforeText");
+        record.setChecked(true);
+        record.setClassName("foo.bar.baz.Class");
+        record.setContentDescription("ContentDescription");
+        record.setCurrentItemIndex(1);
+        record.setEnabled(true);
+        record.setFromIndex(1);
+        record.setFullScreen(true);
+        record.setItemCount(1);
+        record.setParcelableData(Message.obtain(null, 1, 2, 3));
+        record.setPassword(true);
+        record.setRemovedCount(1);
+        record.getText().add("Foo");
+        sentEvent.appendRecord(record);
     }
 
     /**
@@ -158,7 +180,38 @@
                 .isPassword());
         assertEquals("removedCount has incorrect value", expectedEvent.getRemovedCount(),
                 receivedEvent.getRemovedCount());
-        assertEqualsText(expectedEvent, receivedEvent);
+        assertEqualsText(expectedEvent.getText(), receivedEvent.getText());
+        assertEquals("must have one record", expectedEvent.getRecordCount(),
+                receivedEvent.getRecordCount());
+
+        AccessibilityRecord expectedRecord = expectedEvent.getRecord(0);
+        AccessibilityRecord receivedRecord = receivedEvent.getRecord(0);
+
+        assertEquals("addedCount has incorrect value", expectedRecord.getAddedCount(),
+                receivedRecord.getAddedCount());
+        assertEquals("beforeText has incorrect value", expectedRecord.getBeforeText(),
+                receivedRecord.getBeforeText());
+        assertEquals("checked has incorrect value", expectedRecord.isChecked(),
+                receivedRecord.isChecked());
+        assertEquals("className has incorrect value", expectedRecord.getClassName(),
+                receivedRecord.getClassName());
+        assertEquals("contentDescription has incorrect value",
+                expectedRecord.getContentDescription(), receivedRecord.getContentDescription());
+        assertEquals("currentItemIndex has incorrect value", expectedRecord.getCurrentItemIndex(),
+                receivedRecord.getCurrentItemIndex());
+        assertEquals("enabled has incorrect value", expectedRecord.isEnabled(),
+                receivedRecord.isEnabled());
+        assertEquals("fromIndex has incorrect value", expectedRecord.getFromIndex(),
+                receivedRecord.getFromIndex());
+        assertEquals("fullScreen has incorrect value", expectedRecord.isFullScreen(),
+                receivedRecord.isFullScreen());
+        assertEquals("itemCount has incorrect value", expectedRecord.getItemCount(),
+                receivedRecord.getItemCount());
+        assertEquals("password has incorrect value", expectedRecord.isPassword(),
+                receivedRecord.isPassword());
+        assertEquals("removedCount has incorrect value", expectedRecord.getRemovedCount(),
+                receivedRecord.getRemovedCount());
+        assertEqualsText(expectedRecord.getText(), receivedRecord.getText());
     }
 
     /**
@@ -166,11 +219,9 @@
      * <code>receivedEvent</code> by comparing the string representation of the
      * corresponding {@link CharSequence}s.
      */
-    public static void assertEqualsText(AccessibilityEvent expectedEvent,
-            AccessibilityEvent receivedEvent) {
+    public static void assertEqualsText(List<CharSequence> expectedText,
+            List<CharSequence> receivedText ) {
         String message = "text has incorrect value";
-        List<CharSequence> expectedText = expectedEvent.getText();
-        List<CharSequence> receivedText = receivedEvent.getText();
 
         TestCase.assertEquals(message, expectedText.size(), receivedText.size());
 
@@ -190,7 +241,7 @@
      * @param event The event to check.
      */
     public static void assertAccessibilityEventCleared(AccessibilityEvent event) {
-        TestCase.assertEquals("addedCount not properly recycled", 0, event.getAddedCount());
+        TestCase.assertEquals("addedCount not properly recycled", -1, event.getAddedCount());
         TestCase.assertNull("beforeText not properly recycled", event.getBeforeText());
         TestCase.assertNull("className not properly recycled", event.getClassName());
         TestCase.assertNull("contentDescription not properly recycled", event
@@ -199,11 +250,11 @@
                 .getCurrentItemIndex());
         TestCase.assertEquals("eventTime not properly recycled", 0, event.getEventTime());
         TestCase.assertEquals("eventType not properly recycled", 0, event.getEventType());
-        TestCase.assertEquals("fromIndex not properly recycled", 0, event.getFromIndex());
-        TestCase.assertEquals("itemCount not properly recycled", 0, event.getItemCount());
+        TestCase.assertEquals("fromIndex not properly recycled", -1, event.getFromIndex());
+        TestCase.assertEquals("itemCount not properly recycled", -1, event.getItemCount());
         TestCase.assertNull("packageName not properly recycled", event.getPackageName());
         TestCase.assertNull("parcelableData not properly recycled", event.getParcelableData());
-        TestCase.assertEquals("removedCount not properly recycled", 0, event.getRemovedCount());
+        TestCase.assertEquals("removedCount not properly recycled", -1, event.getRemovedCount());
         TestCase.assertTrue("text not properly recycled", event.getText().isEmpty());
     }
 }
diff --git a/tests/tests/view/src/android/view/cts/GravityTest.java b/tests/tests/view/src/android/view/cts/GravityTest.java
index aee209e..1b5d06d 100644
--- a/tests/tests/view/src/android/view/cts/GravityTest.java
+++ b/tests/tests/view/src/android/view/cts/GravityTest.java
@@ -16,6 +16,7 @@
 
 package android.view.cts;
 
+import android.view.View;
 import dalvik.annotation.TestLevel;
 import dalvik.annotation.TestTargetClass;
 import dalvik.annotation.TestTargetNew;
@@ -51,6 +52,11 @@
         new Gravity();
     }
 
+    private void applyGravity(int gravity, int w, int h, Rect container, Rect outRect, boolean bRtl) {
+        final int layoutDirection = bRtl ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR;
+        Gravity.apply(gravity, w, h, mInRect, mOutRect, layoutDirection);
+    }
+
     @TestTargets({
         @TestTargetNew(
             level = TestLevel.COMPLETE,
@@ -79,6 +85,16 @@
         assertEquals(26, mOutRect.right);
         assertEquals(25, mOutRect.top);
         assertEquals(28, mOutRect.bottom);
+        applyGravity(Gravity.TOP, 2, 3, mInRect, mOutRect, false /* LTR direction */);
+        assertEquals(19, mOutRect.left);
+        assertEquals(21, mOutRect.right);
+        assertEquals(20, mOutRect.top);
+        assertEquals(23, mOutRect.bottom);
+        applyGravity(Gravity.TOP, 2, 3, mInRect, mOutRect, true /* RTL direction */);
+        assertEquals(19, mOutRect.left);
+        assertEquals(21, mOutRect.right);
+        assertEquals(20, mOutRect.top);
+        assertEquals(23, mOutRect.bottom);
 
         Gravity.apply(Gravity.BOTTOM, 2, 3, mInRect, mOutRect);
         assertEquals(19, mOutRect.left);
@@ -90,6 +106,16 @@
         assertEquals(26, mOutRect.right);
         assertEquals(32, mOutRect.top);
         assertEquals(35, mOutRect.bottom);
+        applyGravity(Gravity.BOTTOM, 2, 3, mInRect, mOutRect, false /* LTR direction */);
+        assertEquals(19, mOutRect.left);
+        assertEquals(21, mOutRect.right);
+        assertEquals(37, mOutRect.top);
+        assertEquals(40, mOutRect.bottom);
+        applyGravity(Gravity.BOTTOM, 2, 3, mInRect, mOutRect, true /* RTL direction */);
+        assertEquals(19, mOutRect.left);
+        assertEquals(21, mOutRect.right);
+        assertEquals(37, mOutRect.top);
+        assertEquals(40, mOutRect.bottom);
 
         Gravity.apply(Gravity.LEFT, 2, 10, mInRect, mOutRect);
         assertEquals(10, mOutRect.left);
@@ -101,6 +127,37 @@
         assertEquals(17, mOutRect.right);
         assertEquals(30, mOutRect.top);
         assertEquals(40, mOutRect.bottom);
+        applyGravity(Gravity.LEFT, 2, 10, mInRect, mOutRect, false /* LTR direction */);
+        assertEquals(10, mOutRect.left);
+        assertEquals(12, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
+        applyGravity(Gravity.LEFT, 2, 10, mInRect, mOutRect, true /* RTL direction */);
+        assertEquals(10, mOutRect.left);
+        assertEquals(12, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
+
+        Gravity.apply(Gravity.START, 2, 10, mInRect, mOutRect);
+        assertEquals(10, mOutRect.left);
+        assertEquals(12, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
+        Gravity.apply(Gravity.START, 2, 10, mInRect, 5, 5, mOutRect);
+        assertEquals(15, mOutRect.left);
+        assertEquals(17, mOutRect.right);
+        assertEquals(30, mOutRect.top);
+        assertEquals(40, mOutRect.bottom);
+        applyGravity(Gravity.START, 2, 10, mInRect, mOutRect, false /* LTR direction */);
+        assertEquals(10, mOutRect.left);
+        assertEquals(12, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
+        applyGravity(Gravity.START, 2, 10, mInRect, mOutRect, true /* RTL direction */);
+        assertEquals(28, mOutRect.left);
+        assertEquals(30, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
 
         Gravity.apply(Gravity.RIGHT, 2, 10, mInRect, mOutRect);
         assertEquals(28, mOutRect.left);
@@ -112,6 +169,37 @@
         assertEquals(25, mOutRect.right);
         assertEquals(30, mOutRect.top);
         assertEquals(40, mOutRect.bottom);
+        applyGravity(Gravity.RIGHT, 2, 10, mInRect, mOutRect, false /* LTR direction */);
+        assertEquals(28, mOutRect.left);
+        assertEquals(30, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
+        applyGravity(Gravity.RIGHT, 2, 10, mInRect, mOutRect, true /* RTL direction */);
+        assertEquals(28, mOutRect.left);
+        assertEquals(30, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
+
+        Gravity.apply(Gravity.END, 2, 10, mInRect, mOutRect);
+        assertEquals(28, mOutRect.left);
+        assertEquals(30, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
+        Gravity.apply(Gravity.END, 2, 10, mInRect, 5, 5, mOutRect);
+        assertEquals(23, mOutRect.left);
+        assertEquals(25, mOutRect.right);
+        assertEquals(30, mOutRect.top);
+        assertEquals(40, mOutRect.bottom);
+        applyGravity(Gravity.END, 2, 10, mInRect, mOutRect, false /* LTR direction */);
+        assertEquals(28, mOutRect.left);
+        assertEquals(30, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
+        applyGravity(Gravity.END, 2, 10, mInRect, mOutRect, true /* RTL direction */);
+        assertEquals(10, mOutRect.left);
+        assertEquals(12, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
 
         Gravity.apply(Gravity.CENTER_VERTICAL, 2, 10, mInRect, mOutRect);
         assertEquals(19, mOutRect.left);
@@ -123,6 +211,16 @@
         assertEquals(26, mOutRect.right);
         assertEquals(30, mOutRect.top);
         assertEquals(40, mOutRect.bottom);
+        applyGravity(Gravity.CENTER_VERTICAL, 2, 10, mInRect, mOutRect, false /* LTR direction */);
+        assertEquals(19, mOutRect.left);
+        assertEquals(21, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
+        applyGravity(Gravity.CENTER_VERTICAL, 2, 10, mInRect, mOutRect, true /* RTL direction */);
+        assertEquals(19, mOutRect.left);
+        assertEquals(21, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
 
         Gravity.apply(Gravity.FILL_VERTICAL, 2, 10, mInRect, mOutRect);
         assertEquals(19, mOutRect.left);
@@ -134,6 +232,16 @@
         assertEquals(26, mOutRect.right);
         assertEquals(25, mOutRect.top);
         assertEquals(45, mOutRect.bottom);
+        applyGravity(Gravity.FILL_VERTICAL, 2, 10, mInRect, mOutRect, false /* LTR direction */);
+        assertEquals(19, mOutRect.left);
+        assertEquals(21, mOutRect.right);
+        assertEquals(20, mOutRect.top);
+        assertEquals(40, mOutRect.bottom);
+        applyGravity(Gravity.FILL_VERTICAL, 2, 10, mInRect, mOutRect, true /* RTL direction */);
+        assertEquals(19, mOutRect.left);
+        assertEquals(21, mOutRect.right);
+        assertEquals(20, mOutRect.top);
+        assertEquals(40, mOutRect.bottom);
 
         Gravity.apply(Gravity.CENTER_HORIZONTAL, 2, 10, mInRect, mOutRect);
         assertEquals(19, mOutRect.left);
@@ -145,6 +253,16 @@
         assertEquals(26, mOutRect.right);
         assertEquals(30, mOutRect.top);
         assertEquals(40, mOutRect.bottom);
+        applyGravity(Gravity.CENTER_HORIZONTAL, 2, 10, mInRect, mOutRect, false /* LTR direction */);
+        assertEquals(19, mOutRect.left);
+        assertEquals(21, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
+        applyGravity(Gravity.CENTER_HORIZONTAL, 2, 10, mInRect, mOutRect, true /* RTL direction */);
+        assertEquals(19, mOutRect.left);
+        assertEquals(21, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
 
         Gravity.apply(Gravity.FILL_HORIZONTAL, 2, 10, mInRect, mOutRect);
         assertEquals(10, mOutRect.left);
@@ -156,6 +274,16 @@
         assertEquals(35, mOutRect.right);
         assertEquals(30, mOutRect.top);
         assertEquals(40, mOutRect.bottom);
+        applyGravity(Gravity.FILL_HORIZONTAL, 2, 10, mInRect, mOutRect, false /* LTR direction */);
+        assertEquals(10, mOutRect.left);
+        assertEquals(30, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
+        applyGravity(Gravity.FILL_HORIZONTAL, 2, 10, mInRect, mOutRect, true /* RTL direction */);
+        assertEquals(10, mOutRect.left);
+        assertEquals(30, mOutRect.right);
+        assertEquals(25, mOutRect.top);
+        assertEquals(35, mOutRect.bottom);
     }
 
     @TestTargetNew(
@@ -179,6 +307,7 @@
     public void testIsHorizontal() {
         assertFalse(Gravity.isHorizontal(-1));
         assertTrue(Gravity.isHorizontal(Gravity.HORIZONTAL_GRAVITY_MASK));
+        assertTrue(Gravity.isHorizontal(Gravity.RELATIVE_HORIZONTAL_GRAVITY_MASK));
         assertFalse(Gravity.isHorizontal(Gravity.NO_GRAVITY));
     }
 
diff --git a/tests/tests/view/src/android/view/cts/MotionEventTest.java b/tests/tests/view/src/android/view/cts/MotionEventTest.java
index 909ec92..945cefc 100644
--- a/tests/tests/view/src/android/view/cts/MotionEventTest.java
+++ b/tests/tests/view/src/android/view/cts/MotionEventTest.java
@@ -31,6 +31,7 @@
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 import android.view.MotionEvent.PointerCoords;
+import android.view.MotionEvent.PointerProperties;
 
 /**
  * Test {@link MotionEvent}.
@@ -666,4 +667,32 @@
         assertEquals(9f, copy.orientation);
         assertEquals(10f, coords.getAxisValue(MotionEvent.AXIS_GENERIC_1));
     }
+
+    public void testPointerPropertiesDefaultConstructor() {
+        PointerProperties properties = new PointerProperties();
+
+        assertEquals(MotionEvent.INVALID_POINTER_ID, properties.id);
+        assertEquals(MotionEvent.TOOL_TYPE_UNKNOWN, properties.toolType);
+    }
+
+    public void testPointerPropertiesCopyConstructor() {
+        PointerProperties properties = new PointerProperties();
+        properties.id = 1;
+        properties.toolType = MotionEvent.TOOL_TYPE_MOUSE;
+
+        PointerProperties copy = new PointerProperties(properties);
+        assertEquals(1, copy.id);
+        assertEquals(MotionEvent.TOOL_TYPE_MOUSE, copy.toolType);
+    }
+
+    public void testPointerPropertiesCopyFrom() {
+        PointerProperties properties = new PointerProperties();
+        properties.id = 1;
+        properties.toolType = MotionEvent.TOOL_TYPE_MOUSE;
+
+        PointerProperties copy = new PointerProperties();
+        copy.copyFrom(properties);
+        assertEquals(1, copy.id);
+        assertEquals(MotionEvent.TOOL_TYPE_MOUSE, copy.toolType);
+    }
 }
diff --git a/tests/tests/view/src/android/view/cts/ViewTest.java b/tests/tests/view/src/android/view/cts/ViewTest.java
index c5f0104..72a6f0d 100644
--- a/tests/tests/view/src/android/view/cts/ViewTest.java
+++ b/tests/tests/view/src/android/view/cts/ViewTest.java
@@ -16,15 +16,14 @@
 
 package android.view.cts;
 
-import com.android.cts.stub.R;
-import com.android.internal.view.menu.ContextMenuBuilder;
 import com.google.android.collect.Lists;
 
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass;
-import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.TestTargets;
-import dalvik.annotation.ToBeFixed;
+import com.android.cts.stub.R;
+import com.android.internal.view.menu.ContextMenuBuilder;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
 
 import android.app.Activity;
 import android.content.Context;
@@ -39,7 +38,6 @@
 import android.graphics.drawable.StateListDrawable;
 import android.os.Parcelable;
 import android.os.SystemClock;
-import android.provider.Settings;
 import android.test.ActivityInstrumentationTestCase2;
 import android.test.TouchUtils;
 import android.test.UiThreadTest;
@@ -49,6 +47,7 @@
 import android.util.Xml;
 import android.view.ActionMode;
 import android.view.ContextMenu;
+import android.view.ContextMenu.ContextMenuInfo;
 import android.view.Display;
 import android.view.HapticFeedbackConstants;
 import android.view.KeyEvent;
@@ -56,11 +55,6 @@
 import android.view.SoundEffectConstants;
 import android.view.TouchDelegate;
 import android.view.View;
-import android.view.ViewConfiguration;
-import android.view.ViewGroup;
-import android.view.ViewParent;
-import android.view.WindowManagerImpl;
-import android.view.ContextMenu.ContextMenuInfo;
 import android.view.View.BaseSavedState;
 import android.view.View.OnClickListener;
 import android.view.View.OnCreateContextMenuListener;
@@ -68,6 +62,11 @@
 import android.view.View.OnKeyListener;
 import android.view.View.OnLongClickListener;
 import android.view.View.OnTouchListener;
+import android.view.ViewConfiguration;
+import android.view.ViewGroup;
+import android.view.ViewParent;
+import android.view.WindowManagerImpl;
+import android.view.accessibility.AccessibilityEvent;
 import android.view.animation.AlphaAnimation;
 import android.view.animation.Animation;
 import android.view.animation.cts.DelayedCheck;
@@ -80,10 +79,11 @@
 import android.widget.LinearLayout;
 import android.widget.ListView;
 import android.widget.cts.StubActivity;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
+import dalvik.annotation.TestLevel;
+import dalvik.annotation.TestTargetClass;
+import dalvik.annotation.TestTargetNew;
+import dalvik.annotation.TestTargets;
+import dalvik.annotation.ToBeFixed;
 
 /**
  * Test {@link View}.
@@ -4378,9 +4378,6 @@
         )
     })
     public void testHapticFeedback() {
-        // Expect true to be returned for a haptic feedback only if haptics are enabled.
-        boolean expectedHapticsReturnValue = Settings.System.getInt(mActivity.getContentResolver(),
-                Settings.System.HAPTIC_FEEDBACK_ENABLED, 0) != 0;
         final MockView view = (MockView) mActivity.findViewById(R.id.mock_view);
         final int LONG_PRESS = HapticFeedbackConstants.LONG_PRESS;
         final int FLAG_IGNORE_VIEW_SETTING = HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING;
@@ -4391,12 +4388,11 @@
         assertFalse(view.isHapticFeedbackEnabled());
         assertFalse(view.performHapticFeedback(LONG_PRESS));
         assertFalse(view.performHapticFeedback(LONG_PRESS, FLAG_IGNORE_GLOBAL_SETTING));
-        assertEquals(expectedHapticsReturnValue, view.performHapticFeedback(LONG_PRESS, ALWAYS));
+        assertTrue(view.performHapticFeedback(LONG_PRESS, ALWAYS));
 
         view.setHapticFeedbackEnabled(true);
         assertTrue(view.isHapticFeedbackEnabled());
-        assertEquals(expectedHapticsReturnValue, view.performHapticFeedback(
-                LONG_PRESS, FLAG_IGNORE_GLOBAL_SETTING));
+        assertTrue(view.performHapticFeedback(LONG_PRESS, FLAG_IGNORE_GLOBAL_SETTING));
     }
 
     @TestTargets({
@@ -4443,6 +4439,40 @@
         assertTrue(editText.hasCalledCheckInputConnectionProxy());
     }
 
+    @TestTargets({
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "setLayoutDirection",
+            args = {int.class}
+        ),
+        @TestTargetNew(
+            level = TestLevel.COMPLETE,
+            method = "getLayoutDirection",
+            args = {}
+        )
+    })
+    @UiThreadTest
+    public void testLayoutDirection() {
+        View view = new View(mActivity);
+        assertEquals(View.LAYOUT_DIRECTION_INHERIT, view.getLayoutDirection());
+
+        view.setLayoutDirection(View.LAYOUT_DIRECTION_LTR);
+        assertEquals(View.LAYOUT_DIRECTION_LTR, view.getLayoutDirection());
+
+        view.setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
+        assertEquals(View.LAYOUT_DIRECTION_RTL, view.getLayoutDirection());
+
+        view.setLayoutDirection(View.LAYOUT_DIRECTION_INHERIT);
+        assertEquals(View.LAYOUT_DIRECTION_INHERIT, view.getLayoutDirection());
+
+        view.setLayoutDirection(View.LAYOUT_DIRECTION_LOCALE);
+        assertEquals(View.LAYOUT_DIRECTION_LOCALE, view.getLayoutDirection());
+
+        // View.LAYOUT_DIRECTION_MASK = 0xC0000000
+        view.setLayoutDirection(0xffffffff);
+        assertEquals(0xC0000000, view.getLayoutDirection());
+    }
+
     private static class MockEditText extends EditText {
         private boolean mCalledCheckInputConnectionProxy = false;
         private boolean mCalledOnCreateInputConnection = false;
@@ -4636,6 +4666,10 @@
             return DEFAULT_PARENT_STATE_SET;
         }
 
+        public boolean requestSendAccessibilityEvent(View child, AccessibilityEvent event) {
+            return false;
+        }
+
         public static int[] getDefaultParentStateSet() {
             return DEFAULT_PARENT_STATE_SET;
         }
diff --git a/tests/tests/view/src/android/view/cts/View_AnimationTest.java b/tests/tests/view/src/android/view/cts/View_AnimationTest.java
index d071781a..144e670 100644
--- a/tests/tests/view/src/android/view/cts/View_AnimationTest.java
+++ b/tests/tests/view/src/android/view/cts/View_AnimationTest.java
@@ -127,9 +127,9 @@
 
         assertSame(mAnimation, view.getAnimation());
 
-        view.clearAnimation();
         runTestOnUiThread(new Runnable() {
             public void run() {
+                view.clearAnimation();
                 view.invalidate();
             }
         });
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
index 94fe857..52b31e3 100755
--- a/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
+++ b/tests/tests/webkit/src/android/webkit/cts/WebViewTest.java
@@ -44,12 +44,14 @@
 import android.test.UiThreadTest;
 import android.util.AttributeSet;
 import android.util.DisplayMetrics;
+import android.util.Log;
 import android.view.KeyEvent;
 import android.view.MotionEvent;
 import android.view.View;
 import android.view.animation.cts.DelayedCheck;
 import android.webkit.CacheManager;
 import android.webkit.CacheManager.CacheResult;
+import android.webkit.ConsoleMessage;
 import android.webkit.DownloadListener;
 import android.webkit.SslErrorHandler;
 import android.webkit.WebBackForwardList;
@@ -66,20 +68,30 @@
 import java.io.File;
 import java.io.FileInputStream;
 
+import junit.framework.Assert;
+
 @TestTargetClass(android.webkit.WebView.class)
 public class WebViewTest extends ActivityInstrumentationTestCase2<WebViewStubActivity> {
+    private static final String LOGTAG = "WebViewTest";
     private static final int INITIAL_PROGRESS = 100;
     private static long TEST_TIMEOUT = 20000L;
     private static long TIME_FOR_LAYOUT = 1000L;
 
     private WebView mWebView;
     private CtsTestServer mWebServer;
+    private boolean mIsUiThreadDone;
 
     public WebViewTest() {
         super("com.android.cts.stub", WebViewStubActivity.class);
     }
 
     @Override
+    public void runTestOnUiThread(Runnable runnable) throws Throwable {
+        mIsUiThreadDone = false;
+        super.runTestOnUiThread(runnable);
+    }
+
+    @Override
     protected void setUp() throws Exception {
         super.setUp();
         mWebView = getActivity().getWebView();
@@ -91,8 +103,16 @@
 
     @Override
     protected void tearDown() throws Exception {
-        mWebView.clearHistory();
-        mWebView.clearCache(true);
+        try {
+            runTestOnUiThread(new Runnable() {
+                public void run() {
+                    mWebView.clearHistory();
+                    mWebView.clearCache(true);
+                }
+            });
+        } catch(Throwable t) {
+            Log.w(LOGTAG, "tearDown(): Caught exception when posting Runnable to UI thread");
+        }
         if (mWebServer != null) {
             mWebServer.shutdown();
         }
@@ -121,6 +141,7 @@
             args = {Context.class, AttributeSet.class, int.class}
         )
     })
+    @UiThreadTest
     public void testConstructor() {
         new WebView(getActivity());
         new WebView(getActivity(), null);
@@ -132,6 +153,7 @@
         method = "findAddress",
         args = {String.class}
     )
+    @UiThreadTest
     public void testFindAddress() {
         /*
          * Info about USPS
@@ -187,12 +209,13 @@
         args = {},
         notes = "Cannot test the effect of this method"
     )
+    @UiThreadTest
     public void testInvokeZoomPicker() throws Exception {
         WebSettings settings = mWebView.getSettings();
         assertTrue(settings.supportZoom());
         startWebServer(false);
         String url = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
-        assertLoadUrlSuccessfully(mWebView, url);
+        assertLoadUrlSuccessfully(url);
         mWebView.invokeZoomPicker();
     }
 
@@ -338,6 +361,7 @@
             args = {}
         )
     })
+    @UiThreadTest
     public void testScrollBarOverlay() throws Throwable {
         mWebView.setHorizontalScrollbarOverlay(true);
         mWebView.setVerticalScrollbarOverlay(false);
@@ -372,6 +396,7 @@
             args = {}
         )
     })
+    @UiThreadTest
     public void testLoadUrl() throws Exception {
         assertNull(mWebView.getUrl());
         assertNull(mWebView.getOriginalUrl());
@@ -380,7 +405,7 @@
         startWebServer(false);
         String url = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
         mWebView.loadUrl(url);
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        waitForLoadComplete();
         assertEquals(100, mWebView.getProgress());
         assertEquals(url, mWebView.getUrl());
         assertEquals(url, mWebView.getOriginalUrl());
@@ -399,6 +424,7 @@
             args = {}
         )
     })
+    @UiThreadTest
     public void testGetOriginalUrl() throws Exception {
         assertNull(mWebView.getUrl());
         assertNull(mWebView.getOriginalUrl());
@@ -410,7 +436,7 @@
         mWebView.setWebViewClient(new WebViewClient());
         mWebView.loadUrl(redirect);
 
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        waitForLoadComplete();
         assertEquals(url, mWebView.getUrl());
         assertEquals(redirect, mWebView.getOriginalUrl());
     }
@@ -420,6 +446,7 @@
         method = "stopLoading",
         args = {}
     )
+    @UiThreadTest
     public void testStopLoading() throws Exception {
         assertNull(mWebView.getUrl());
         assertEquals(INITIAL_PROGRESS, mWebView.getProgress());
@@ -469,6 +496,7 @@
             args = {int.class}
         )
     })
+    @UiThreadTest
     public void testGoBackAndForward() throws Exception {
         assertGoBackOrForwardBySteps(false, -1);
         assertGoBackOrForwardBySteps(false, 1);
@@ -478,17 +506,17 @@
         String url2 = mWebServer.getAssetUrl(TestHtmlConstants.HTML_URL2);
         String url3 = mWebServer.getAssetUrl(TestHtmlConstants.HTML_URL3);
 
-        assertLoadUrlSuccessfully(mWebView, url1);
+        assertLoadUrlSuccessfully(url1);
         delayedCheckWebBackForwardList(url1, 0, 1);
         assertGoBackOrForwardBySteps(false, -1);
         assertGoBackOrForwardBySteps(false, 1);
 
-        assertLoadUrlSuccessfully(mWebView, url2);
+        assertLoadUrlSuccessfully(url2);
         delayedCheckWebBackForwardList(url2, 1, 2);
         assertGoBackOrForwardBySteps(true, -1);
         assertGoBackOrForwardBySteps(false, 1);
 
-        assertLoadUrlSuccessfully(mWebView, url3);
+        assertLoadUrlSuccessfully(url3);
         delayedCheckWebBackForwardList(url3, 2, 3);
         assertGoBackOrForwardBySteps(true, -2);
         assertGoBackOrForwardBySteps(false, 1);
@@ -519,24 +547,49 @@
         method = "addJavascriptInterface",
         args = {Object.class, String.class}
     )
+    @UiThreadTest
     public void testAddJavascriptInterface() throws Exception {
         WebSettings settings = mWebView.getSettings();
         settings.setJavaScriptEnabled(true);
         settings.setJavaScriptCanOpenWindowsAutomatically(true);
 
+        final class DummyJavaScriptInterface {
+            private boolean mWasProvideResultCalled;
+            private String mResult;
+
+            private synchronized String waitForResult() {
+                while (!mWasProvideResultCalled) {
+                    try {
+                        wait(TEST_TIMEOUT);
+                    } catch (InterruptedException e) {
+                        continue;
+                    }
+                    if (!mWasProvideResultCalled) {
+                        Assert.fail("Unexpected timeout");
+                    }
+                }
+                return mResult;
+            }
+
+            public synchronized boolean wasProvideResultCalled() {
+                return mWasProvideResultCalled;
+            }
+
+            public synchronized void provideResult(String result) {
+                mWasProvideResultCalled = true;
+                mResult = result;
+                notify();
+            }
+        }
+
         final DummyJavaScriptInterface obj = new DummyJavaScriptInterface();
         mWebView.addJavascriptInterface(obj, "dummy");
-        assertFalse(obj.hasChangedTitle());
+        assertFalse(obj.wasProvideResultCalled());
 
         startWebServer(false);
         String url = mWebServer.getAssetUrl(TestHtmlConstants.ADD_JAVA_SCRIPT_INTERFACE_URL);
-        assertLoadUrlSuccessfully(mWebView, url);
-        new DelayedCheck() {
-            @Override
-            protected boolean check() {
-                return obj.hasChangedTitle();
-            }
-        }.run();
+        assertLoadUrlSuccessfully(url);
+        assertEquals("Original title", obj.waitForResult());
     }
 
     @TestTargetNew(
@@ -544,6 +597,7 @@
         method = "addJavascriptInterface",
         args = {Object.class, String.class}
     )
+    @UiThreadTest
     public void testAddJavascriptInterfaceNullObject() throws Exception {
         WebSettings settings = mWebView.getSettings();
         settings.setJavaScriptEnabled(true);
@@ -552,26 +606,26 @@
 
         // Test that the property is initially undefined.
         mWebView.loadData(setTitleToPropertyTypeHtml, "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        waitForLoadComplete();
         assertEquals("undefined", mWebView.getTitle());
 
         // Test that adding a null object has no effect.
         mWebView.addJavascriptInterface(null, "injectedObject");
         mWebView.loadData(setTitleToPropertyTypeHtml, "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        waitForLoadComplete();
         assertEquals("undefined", mWebView.getTitle());
 
         // Test that adding an object gives an object type.
-        final DummyJavaScriptInterface obj = new DummyJavaScriptInterface();
+        final Object obj = new Object();
         mWebView.addJavascriptInterface(obj, "injectedObject");
         mWebView.loadData(setTitleToPropertyTypeHtml, "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        waitForLoadComplete();
         assertEquals("object", mWebView.getTitle());
 
         // Test that trying to replace with a null object has no effect.
         mWebView.addJavascriptInterface(null, "injectedObject");
         mWebView.loadData(setTitleToPropertyTypeHtml, "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        waitForLoadComplete();
         assertEquals("object", mWebView.getTitle());
     }
 
@@ -587,10 +641,11 @@
             args = {String.class}
         )
     })
+    @UiThreadTest
     public void testAddJavascriptInterfaceOddName() throws Exception {
         WebSettings settings = mWebView.getSettings();
         settings.setJavaScriptEnabled(true);
-        final DummyJavaScriptInterface obj = new DummyJavaScriptInterface();
+        final Object obj = new Object();
 
         // We should be able to use any character other than a single quote.
         // TODO: We currently fail when the name contains '#', '\', '\n' or '\r'.
@@ -606,12 +661,12 @@
 
             mWebView.addJavascriptInterface(obj, name);
             mWebView.loadData(Uri.encode(setTitleToPropertyTypeHtml), "text/html", "UTF-8");
-            waitForLoadComplete(mWebView, TEST_TIMEOUT);
+            waitForLoadComplete();
             assertEquals("object", mWebView.getTitle());
 
             mWebView.removeJavascriptInterface(name);
             mWebView.loadData(Uri.encode(setTitleToPropertyTypeHtml), "text/html", "UTF-8");
-            waitForLoadComplete(mWebView, TEST_TIMEOUT);
+            waitForLoadComplete();
             assertEquals("undefined", mWebView.getTitle());
         }
     }
@@ -621,6 +676,7 @@
         method = "removeJavascriptInterface",
         args = {String.class}
     )
+    @UiThreadTest
     public void testRemoveJavascriptInterface() throws Exception {
         WebSettings settings = mWebView.getSettings();
         settings.setJavaScriptEnabled(true);
@@ -628,19 +684,74 @@
                 "<body onload=\"document.title = typeof window.injectedObject;\"></body></html>";
 
         // Test that adding an object gives an object type.
-        final DummyJavaScriptInterface obj = new DummyJavaScriptInterface();
-        mWebView.addJavascriptInterface(obj, "injectedObject");
+        mWebView.addJavascriptInterface(new Object(), "injectedObject");
         mWebView.loadData(setTitleToPropertyTypeHtml, "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        waitForLoadComplete();
         assertEquals("object", mWebView.getTitle());
 
-        // Test that removing the object leaves the property undefined.
+        // Test that reloading the page after removing the object leaves the property undefined.
         mWebView.removeJavascriptInterface("injectedObject");
         mWebView.loadData(setTitleToPropertyTypeHtml, "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        waitForLoadComplete();
         assertEquals("undefined", mWebView.getTitle());
     }
 
+    @TestTargetNew(
+        level = TestLevel.COMPLETE,
+        method = "removeJavascriptInterface",
+        args = {String.class}
+    )
+    public void testUseRemovedJavascriptInterface() throws Throwable {
+        class RemovedObject {
+            @Override
+            public String toString() {
+                return "removedObject";
+            }
+            public void remove() throws Throwable {
+                runTestOnUiThread(new Runnable() {
+                    public void run() {
+                        mWebView.removeJavascriptInterface("removedObject");
+                        System.gc();
+                    }
+                });
+            }
+        }
+        class ResultObject {
+            private String mResult;
+            private boolean mIsResultAvailable;
+            public synchronized void setResult(String result) {
+                mResult = result;
+                mIsResultAvailable = true;
+                notify();
+            }
+            public synchronized String getResult() {
+                while (!mIsResultAvailable) {
+                    try {
+                        wait();
+                    } catch (InterruptedException e) {
+                    }
+                }
+                return mResult;
+            }
+        }
+        final ResultObject resultObject = new ResultObject();
+
+        // Test that an object is still usable if removed while the page is in use, even if we have
+        // no external references to it.
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.getSettings().setJavaScriptEnabled(true);
+                mWebView.addJavascriptInterface(new RemovedObject(), "removedObject");
+                mWebView.addJavascriptInterface(resultObject, "resultObject");
+                mWebView.loadData("<html><head></head>" +
+                        "<body onload=\"window.removedObject.remove();" +
+                        "resultObject.setResult(removedObject.toString());\"></body></html>",
+                        "text/html", "UTF-8");
+            }
+        });
+        assertEquals("removedObject", resultObject.getResult());
+    }
+
     @TestTargets({
         @TestTargetNew(
             level = TestLevel.COMPLETE,
@@ -658,27 +769,55 @@
             args = {}
         )
     })
-    public void testCapturePicture() throws Exception {
+    public void testCapturePicture() throws Exception, Throwable {
         startWebServer(false);
-        String url = mWebServer.getAssetUrl(TestHtmlConstants.BLANK_PAGE_URL);
-        // showing the blank page will make the picture filled with background color
-        assertLoadUrlSuccessfully(mWebView, url);
-        Picture p = mWebView.capturePicture();
-        Bitmap b = Bitmap.createBitmap(p.getWidth(), p.getHeight(), Config.ARGB_8888);
-        p.draw(new Canvas(b));
-        // default color is white
+        final String url = mWebServer.getAssetUrl(TestHtmlConstants.BLANK_PAGE_URL);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                // showing the blank page will make the picture filled with background color
+                mWebView.loadUrl(url);
+                waitForLoadComplete();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+
+        class PictureRunnable implements Runnable {
+            private Picture mPicture;
+            public void run() {
+                mPicture = mWebView.capturePicture();
+                Bitmap b = Bitmap.createBitmap(mPicture.getWidth(), mPicture.getHeight(),
+                        Config.ARGB_8888);
+                mPicture.draw(new Canvas(b));
+                // default color is white
+                assertBitmapFillWithColor(b, Color.WHITE);
+
+                mWebView.setBackgroundColor(Color.CYAN);
+                mWebView.reload();
+                waitForLoadComplete();
+            }
+            public Picture getPicture() {
+                return mPicture;
+            }
+        }
+        PictureRunnable runnable = new PictureRunnable();
+        runTestOnUiThread(runnable);
+        getInstrumentation().waitForIdleSync();
+
+        // the content of the picture will not be updated automatically
+        Picture picture = runnable.getPicture();
+        Bitmap b = Bitmap.createBitmap(picture.getWidth(), picture.getHeight(), Config.ARGB_8888);
+        picture.draw(new Canvas(b));
         assertBitmapFillWithColor(b, Color.WHITE);
 
-        mWebView.setBackgroundColor(Color.CYAN);
-        mWebView.reload();
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-        // the content of the picture will not be updated automatically
-        p.draw(new Canvas(b));
-        assertBitmapFillWithColor(b, Color.WHITE);
-        // update the content
-        p = mWebView.capturePicture();
-        p.draw(new Canvas(b));
-        assertBitmapFillWithColor(b, Color.CYAN);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                // update the content
+                Picture p = mWebView.capturePicture();
+                Bitmap b = Bitmap.createBitmap(p.getWidth(), p.getHeight(), Config.ARGB_8888);
+                p.draw(new Canvas(b));
+                assertBitmapFillWithColor(b, Color.CYAN);
+            }
+        });
     }
 
     @TestTargetNew(
@@ -686,12 +825,28 @@
         method = "setPictureListener",
         args = {PictureListener.class}
     )
-    public void testSetPictureListener() throws Exception {
+    public void testSetPictureListener() throws Exception, Throwable {
+        final class MyPictureListener implements PictureListener {
+            public int callCount;
+            public WebView webView;
+            public Picture picture;
+
+            public void onNewPicture(WebView view, Picture picture) {
+                this.callCount += 1;
+                this.webView = view;
+                this.picture = picture;
+            }
+        }
+
         final MyPictureListener listener = new MyPictureListener();
-        mWebView.setPictureListener(listener);
         startWebServer(false);
-        String url = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
-        assertLoadUrlSuccessfully(mWebView, url);
+        final String url = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.setPictureListener(listener);
+                assertLoadUrlSuccessfully(url);
+            }
+        });
         new DelayedCheck(TEST_TIMEOUT) {
             protected boolean check() {
                 return listener.callCount > 0;
@@ -701,8 +856,12 @@
         assertNotNull(listener.picture);
 
         final int oldCallCount = listener.callCount;
-        url = mWebServer.getAssetUrl(TestHtmlConstants.SMALL_IMG_URL);
-        assertLoadUrlSuccessfully(mWebView, url);
+        final String newUrl = mWebServer.getAssetUrl(TestHtmlConstants.SMALL_IMG_URL);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                assertLoadUrlSuccessfully(newUrl);
+            }
+        });
         new DelayedCheck(TEST_TIMEOUT) {
             protected boolean check() {
                 return listener.callCount > oldCallCount;
@@ -731,8 +890,13 @@
     public void testSaveAndRestorePicture() throws Throwable {
         mWebView.setBackgroundColor(Color.CYAN);
         startWebServer(false);
-        String url = mWebServer.getAssetUrl(TestHtmlConstants.BLANK_PAGE_URL);
-        assertLoadUrlSuccessfully(mWebView, url);
+        final String url = mWebServer.getAssetUrl(TestHtmlConstants.BLANK_PAGE_URL);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                assertLoadUrlSuccessfully(url);
+            }
+        });
+        getInstrumentation().waitForIdleSync();
 
         final Bundle bundle = new Bundle();
         final File f = getActivity().getFileStreamPath("snapshot");
@@ -743,7 +907,11 @@
         try {
             assertTrue(bundle.isEmpty());
             assertEquals(0, f.length());
-            assertTrue(mWebView.savePicture(bundle, f));
+            runTestOnUiThread(new Runnable() {
+                public void run() {
+                    assertTrue(mWebView.savePicture(bundle, f));
+                }
+            });
 
             // File saving is done in a separate thread.
             new DelayedCheck() {
@@ -760,15 +928,22 @@
             p.draw(new Canvas(b));
             assertBitmapFillWithColor(b, Color.CYAN);
 
-            mWebView.setBackgroundColor(Color.WHITE);
-            mWebView.reload();
-            waitForLoadComplete(mWebView, TEST_TIMEOUT);
-
-            b = Bitmap.createBitmap(mWebView.getWidth(), mWebView.getHeight(), Config.ARGB_8888);
-            mWebView.draw(new Canvas(b));
-            assertBitmapFillWithColor(b, Color.WHITE);
             runTestOnUiThread(new Runnable() {
                 public void run() {
+                    mWebView.setBackgroundColor(Color.WHITE);
+                    mWebView.reload();
+                    waitForLoadComplete();
+                }
+            });
+            getInstrumentation().waitForIdleSync();
+
+            runTestOnUiThread(new Runnable() {
+                public void run() {
+                    Bitmap b = Bitmap.createBitmap(mWebView.getWidth(), mWebView.getHeight(),
+                            Config.ARGB_8888);
+                    mWebView.draw(new Canvas(b));
+                    assertBitmapFillWithColor(b, Color.WHITE);
+
                     assertTrue(mWebView.restorePicture(bundle, f));
                 }
             });
@@ -794,6 +969,7 @@
             args = {String.class, String.class}
         )
     })
+    @UiThreadTest
     public void testAccessHttpAuthUsernamePassword() {
         try {
             WebViewDatabase.getInstance(getActivity()).clearHttpAuthUsernamePassword();
@@ -860,6 +1036,7 @@
         method = "savePassword",
         args = {String.class, String.class, String.class}
     )
+    @UiThreadTest
     public void testSavePassword() {
         WebViewDatabase db = WebViewDatabase.getInstance(getActivity());
         try {
@@ -898,27 +1075,54 @@
             args = {}
         )
     })
-    public void testLoadData() throws Exception {
-        assertNull(mWebView.getTitle());
-        mWebView.loadData("<html><head><title>Hello,World!</title></head><body></body></html>",
-                "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-        assertEquals("Hello,World!", mWebView.getTitle());
+    public void testLoadData() throws Throwable {
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                assertNull(mWebView.getTitle());
+                mWebView.loadData("<html><head><title>Hello,World!</title></head><body></body>" +
+                        "</html>",
+                        "text/html", "UTF-8");
+                waitForLoadComplete();
+                assertEquals("Hello,World!", mWebView.getTitle());
+            }
+        });
 
+        // Test that JavaScript can't access cross-origin content.
+        class ConsoleMessageWebChromeClient extends WebChromeClient {
+            private boolean mIsMessageLevelAvailable;
+            private ConsoleMessage.MessageLevel mMessageLevel;
+            @Override
+            public synchronized boolean onConsoleMessage(ConsoleMessage message) {
+                mMessageLevel = message.messageLevel();
+                mIsMessageLevelAvailable = true;
+                notify();
+                return true;
+            }
+            public synchronized ConsoleMessage.MessageLevel getMessageLevel() {
+                while (!mIsMessageLevelAvailable) {
+                    try {
+                        wait();
+                    } catch (InterruptedException e) {
+                    }
+                }
+                return mMessageLevel;
+            }
+        }
         startWebServer(false);
-        String imgUrl = mWebServer.getAssetUrl(TestHtmlConstants.SMALL_IMG_URL);
-        mWebView.loadData("<html><body><img src=\"" + imgUrl + "\"/></body></html>",
-                "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-
-        AssetManager assets = getActivity().getAssets();
-        Bitmap b1 = BitmapFactory.decodeStream(assets.open(TestHtmlConstants.SMALL_IMG_URL));
-        b1 = b1.copy(Config.ARGB_8888, true);
-
-        Picture p = mWebView.capturePicture();
-        Bitmap b2 = Bitmap.createBitmap(p.getWidth(), p.getHeight(), Config.ARGB_8888);
-        p.draw(new Canvas(b2));
-        assertTrue(checkBitmapInsideAnother(b1, b2));
+        final ConsoleMessageWebChromeClient webChromeClient = new ConsoleMessageWebChromeClient();
+        final String crossOriginUrl = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.getSettings().setJavaScriptEnabled(true);
+                mWebView.setWebChromeClient(webChromeClient);
+                mWebView.loadData("<html><head></head><body onload=\"" +
+                        "document.title = " +
+                        "document.getElementById('frame').contentWindow.location.href;" +
+                        "\"><iframe id=\"frame\" src=\"" + crossOriginUrl + "\"></body></html>",
+                        "text/html", "UTF-8");
+            }
+        });
+        assertEquals(ConsoleMessage.MessageLevel.ERROR, webChromeClient.getMessageLevel());
     }
 
     @TestTargets({
@@ -938,32 +1142,50 @@
             args = {}
         )
     })
+    @UiThreadTest
     public void testLoadDataWithBaseUrl() throws Exception {
         assertNull(mWebView.getTitle());
         assertNull(mWebView.getUrl());
         String imgUrl = TestHtmlConstants.SMALL_IMG_URL; // relative
 
+        // Check that we can access relative URLs and that reported URL is supplied history URL.
         startWebServer(false);
         String baseUrl = mWebServer.getAssetUrl("foo.html");
-        String failUrl = "random";
+        String historyUrl = "random";
         mWebView.loadDataWithBaseURL(baseUrl,
                 "<html><body><img src=\"" + imgUrl + "\"/></body></html>",
-                "text/html", "UTF-8", failUrl);
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-        // check that image was retrieved from the server
+                "text/html", "UTF-8", historyUrl);
+        waitForLoadComplete();
         assertTrue(mWebServer.getLastRequestUrl().endsWith(imgUrl));
-        // the fail URL is used for the history entry, even if the load succeeds
-        assertEquals(failUrl, mWebView.getUrl());
+        assertEquals(historyUrl, mWebView.getUrl());
 
+        // Check that reported URL is "about:blank" when supplied history URL
+        // is null.
         imgUrl = TestHtmlConstants.LARGE_IMG_URL;
         mWebView.loadDataWithBaseURL(baseUrl,
                 "<html><body><img src=\"" + imgUrl + "\"/></body></html>",
                 "text/html", "UTF-8", null);
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-        // check that image was retrieved from the server
+        waitForLoadComplete();
         assertTrue(mWebServer.getLastRequestUrl().endsWith(imgUrl));
-        // no history item saved, URL is still the last one
         assertEquals("about:blank", mWebView.getUrl());
+
+        // Test that JavaScript can access content from the same origin as the base URL.
+        mWebView.getSettings().setJavaScriptEnabled(true);
+        final String crossOriginUrl = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
+        mWebView.loadDataWithBaseURL(baseUrl, "<html><head></head><body onload=\"" +
+                "document.title = document.getElementById('frame').contentWindow.location.href;" +
+                "\"><iframe id=\"frame\" src=\"" + crossOriginUrl + "\"></body></html>",
+                "text/html", "UTF-8", null);
+        waitForLoadComplete();
+        assertEquals(crossOriginUrl, mWebView.getTitle());
+
+        // Check that when the base URL uses the 'data' scheme, a 'data' scheme URL is used and the
+        // history URL is ignored.
+        mWebView.loadDataWithBaseURL("data:foo", "<html><body>bar</body></html>",
+                "text/html", "UTF-8", historyUrl);
+        waitForLoadComplete();
+        assertTrue(mWebView.getUrl().indexOf("data:text/html,") == 0);
+        assertTrue(mWebView.getUrl().indexOf("bar") > 0);
     }
 
     @TestTargetNew(
@@ -972,21 +1194,14 @@
         args = {String.class},
         notes = "Cannot check highlighting"
     )
-    public void testFindAll() throws Throwable {
-        getActivity().runOnUiThread(new Runnable() {
-            public void run() {
-                String p = "<p>Find all instances of find on the page and highlight them.</p>";
+    @UiThreadTest
+    public void testFindAll() {
+        String p = "<p>Find all instances of find on the page and highlight them.</p>";
 
-                mWebView.loadData("<html><body>" + p +"</body></html>", "text/html", "UTF-8");
-            }
-        });
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        mWebView.loadData("<html><body>" + p + "</body></html>", "text/html", "UTF-8");
+        waitForLoadComplete();
 
-        runTestOnUiThread(new Runnable() {
-            public void run() {
-                assertEquals(2, mWebView.findAll("find"));
-            }
-        });
+        assertEquals(2, mWebView.findAll("find"));
     }
 
     @TestTargets({
@@ -1007,52 +1222,78 @@
         )
     })
     public void testFindNext() throws Throwable {
-        // Reset the scaling so that finding the next "all" text will require scrolling.
-        mWebView.setInitialScale(100);
+        final ScrollRunnable runnable = new ScrollRunnable();
 
-        DisplayMetrics metrics = mWebView.getContext().getResources().getDisplayMetrics();
-        int dimension = Math.max(metrics.widthPixels, metrics.heightPixels);
-        // create a paragraph high enough to take up the entire screen
-        String p = "<p style=\"height:" + dimension + "px;\">" +
-                "Find all instances of a word on the page and highlight them.</p>";
+        final class StopScrollingDelayedCheck extends DelayedCheck {
+            private int mPreviousScrollY = -1;
+            @Override
+            protected boolean check() {
+                try {
+                    runTestOnUiThread(runnable);
+                } catch (Throwable t) {}
+                boolean hasStopped =
+                    (mPreviousScrollY == -1 ? false : (runnable.getScrollY() == mPreviousScrollY));
+                mPreviousScrollY = runnable.getScrollY();
+                return hasStopped;
+            }
+        }
 
-        mWebView.loadData("<html><body>" + p + p + "</body></html>", "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        final class FindNextRunnable implements Runnable {
+            private boolean mForward;
+            FindNextRunnable(boolean forward) {
+                mForward = forward;
+            }
+            public void run() {
+                mWebView.findNext(mForward);
+            }
+        }
 
-        // highlight all the strings found
         runTestOnUiThread(new Runnable() {
             public void run() {
+                // Reset the scaling so that finding the next "all" text will require scrolling.
+                mWebView.setInitialScale(100);
+
+                DisplayMetrics metrics = mWebView.getContext().getResources().getDisplayMetrics();
+                int dimension = Math.max(metrics.widthPixels, metrics.heightPixels);
+                // create a paragraph high enough to take up the entire screen
+                String p = "<p style=\"height:" + dimension + "px;\">" +
+                        "Find all instances of a word on the page and highlight them.</p>";
+
+                mWebView.loadData("<html><body>" + p + p + "</body></html>", "text/html", "UTF-8");
+                waitForLoadComplete();
+
+                // highlight all the strings found
                 mWebView.findAll("all");
             }
         });
         getInstrumentation().waitForIdleSync();
-        int previousScrollY = mWebView.getScrollY();
 
-        // Can not use @UiThreadTest here as we need wait in other thread until the scroll in UI
-        // thread finishes
-        findNextOnUiThread(true);
-        delayedCheckStopScrolling();
-        // assert that the view scrolls and focuses "all" in the second page
-        assertTrue(mWebView.getScrollY() > previousScrollY);
-        previousScrollY = mWebView.getScrollY();
+        runTestOnUiThread(runnable);
+        int previousScrollY = runnable.getScrollY();
 
-        findNextOnUiThread(true);
-        delayedCheckStopScrolling();
-        // assert that the view scrolls and focuses "all" in the first page
-        assertTrue(mWebView.getScrollY() < previousScrollY);
-        previousScrollY = mWebView.getScrollY();
+        // Focus "all" in the second page and assert that the view scrolls.
+        runTestOnUiThread(new FindNextRunnable(true));
+        new StopScrollingDelayedCheck().run();
+        assertTrue(runnable.getScrollY() > previousScrollY);
+        previousScrollY = runnable.getScrollY();
 
-        findNextOnUiThread(false);
-        delayedCheckStopScrolling();
-        // assert that the view scrolls and focuses "all" in the second page
-        assertTrue(mWebView.getScrollY() > previousScrollY);
-        previousScrollY = mWebView.getScrollY();
+        // Focus "all" in the first page and assert that the view scrolls.
+        runTestOnUiThread(new FindNextRunnable(true));
+        new StopScrollingDelayedCheck().run();
+        assertTrue(runnable.getScrollY() < previousScrollY);
+        previousScrollY = runnable.getScrollY();
 
-        findNextOnUiThread(false);
-        delayedCheckStopScrolling();
-        // assert that the view scrolls and focuses "all" in the first page
-        assertTrue(mWebView.getScrollY() < previousScrollY);
-        previousScrollY = mWebView.getScrollY();
+        // Focus "all" in the second page and assert that the view scrolls.
+        runTestOnUiThread(new FindNextRunnable(false));
+        new StopScrollingDelayedCheck().run();
+        assertTrue(runnable.getScrollY() > previousScrollY);
+        previousScrollY = runnable.getScrollY();
+
+        // Focus "all" in the first page and assert that the view scrolls.
+        runTestOnUiThread(new FindNextRunnable(false));
+        new StopScrollingDelayedCheck().run();
+        assertTrue(runnable.getScrollY() < previousScrollY);
+        previousScrollY = runnable.getScrollY();
 
         // clear the result
         runTestOnUiThread(new Runnable() {
@@ -1063,14 +1304,13 @@
         getInstrumentation().waitForIdleSync();
 
         // can not scroll any more
-        findNextOnUiThread(false);
-        delayedCheckStopScrolling();
-        assertTrue(mWebView.getScrollY() == previousScrollY);
+        runTestOnUiThread(new FindNextRunnable(false));
+        new StopScrollingDelayedCheck().run();
+        assertTrue(runnable.getScrollY() == previousScrollY);
 
-        findNextOnUiThread(true);
-        delayedCheckStopScrolling();
-
-        assertTrue(mWebView.getScrollY() == previousScrollY);
+        runTestOnUiThread(new FindNextRunnable(true));
+        new StopScrollingDelayedCheck().run();
+        assertTrue(runnable.getScrollY() == previousScrollY);
     }
 
     @TestTargetNew(
@@ -1078,20 +1318,46 @@
         method = "documentHasImages",
         args = {android.os.Message.class}
     )
-    public void testDocumentHasImages() throws Exception {
-        startWebServer(false);
-        String imgUrl = mWebServer.getAssetUrl(TestHtmlConstants.SMALL_IMG_URL);
-        mWebView.loadData("<html><body><img src=\"" + imgUrl + "\"/></body></html>",
-                "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+    public void testDocumentHasImages() throws Exception, Throwable {
+        final class DocumentHasImageCheckHandler extends Handler {
+            private boolean mReceived;
+            private int mMsgArg1;
+            public DocumentHasImageCheckHandler(Looper looper) {
+                super(looper);
+            }
+            @Override
+            public void handleMessage(Message msg) {
+                synchronized(this) {
+                    mReceived = true;
+                    mMsgArg1 = msg.arg1;
+                }
+            }
+            public synchronized boolean hasCalledHandleMessage() {
+                return mReceived;
+            }
+            public synchronized int getMsgArg1() {
+                return mMsgArg1;
+            }
+        }
 
-        // create the handler in other thread
+        startWebServer(false);
+        final String imgUrl = mWebServer.getAssetUrl(TestHtmlConstants.SMALL_IMG_URL);
+
+        // Create a handler on the UI thread.
         final DocumentHasImageCheckHandler handler =
             new DocumentHasImageCheckHandler(mWebView.getHandler().getLooper());
-        Message response = new Message();
-        response.setTarget(handler);
-        assertFalse(handler.hasCalledHandleMessage());
-        mWebView.documentHasImages(response);
+
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.loadData("<html><body><img src=\"" + imgUrl + "\"/></body></html>",
+                        "text/html", "UTF-8");
+                waitForLoadComplete();
+                Message response = new Message();
+                response.setTarget(handler);
+                assertFalse(handler.hasCalledHandleMessage());
+                mWebView.documentHasImages(response);
+            }
+        });
         new DelayedCheck() {
             @Override
             protected boolean check() {
@@ -1114,38 +1380,90 @@
         )
     })
     public void testPageScroll() throws Throwable {
-        DisplayMetrics metrics = mWebView.getContext().getResources().getDisplayMetrics();
-        int dimension = 2 * Math.max(metrics.widthPixels, metrics.heightPixels);
-        String p = "<p style=\"height:" + dimension + "px;\">" +
-                "Scroll by half the size of the page.</p>";
-        mWebView.loadData("<html><body>" + p + p + "</body></html>", "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-
-        assertTrue(pageDownOnUiThread(false));
-
-        // scroll to the bottom
-        while (pageDownOnUiThread(false)) {
-            // do nothing
+        final class PageUpRunnable implements Runnable {
+            private boolean mResult;
+            public void run() {
+                mResult = mWebView.pageUp(false);
+            }
+            public boolean getResult() {
+                return mResult;
+            }
         }
-        assertFalse(pageDownOnUiThread(false));
-        int bottomScrollY = mWebView.getScrollY();
 
-        assertTrue(pageUpOnUiThread(false));
-
-        // scroll to the top
-        while (pageUpOnUiThread(false)) {
-            // do nothing
+        final class PageDownRunnable implements Runnable {
+            private boolean mResult;
+            public void run() {
+                mResult = mWebView.pageDown(false);
+            }
+            public boolean getResult() {
+                return mResult;
+            }
         }
-        assertFalse(pageUpOnUiThread(false));
-        int topScrollY = mWebView.getScrollY();
+
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                DisplayMetrics metrics = mWebView.getContext().getResources().getDisplayMetrics();
+                int dimension = 2 * Math.max(metrics.widthPixels, metrics.heightPixels);
+                String p = "<p style=\"height:" + dimension + "px;\">" +
+                        "Scroll by half the size of the page.</p>";
+                mWebView.loadData("<html><body>" + p + p + "</body></html>", "text/html", "UTF-8");
+                waitForLoadComplete();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                assertTrue(mWebView.pageDown(false));
+            }
+        });
+
+        PageDownRunnable pageDownRunnable = new PageDownRunnable();
+        do {
+            getInstrumentation().waitForIdleSync();
+            runTestOnUiThread(pageDownRunnable);
+        } while (pageDownRunnable.getResult());
+
+        ScrollRunnable scrollRunnable = new ScrollRunnable();
+        getInstrumentation().waitForIdleSync();
+        runTestOnUiThread(scrollRunnable);
+        int bottomScrollY = scrollRunnable.getScrollY();
+
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                assertTrue(mWebView.pageUp(false));
+            }
+        });
+
+        PageUpRunnable pageUpRunnable = new PageUpRunnable();
+        do {
+            getInstrumentation().waitForIdleSync();
+            runTestOnUiThread(pageUpRunnable);
+        } while (pageUpRunnable.getResult());
+
+        getInstrumentation().waitForIdleSync();
+        runTestOnUiThread(scrollRunnable);
+        int topScrollY = scrollRunnable.getScrollY();
 
         // jump to the bottom
-        assertTrue(pageDownOnUiThread(true));
-        assertEquals(bottomScrollY, mWebView.getScrollY());
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                assertTrue(mWebView.pageDown(true));
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+        runTestOnUiThread(scrollRunnable);
+        assertEquals(bottomScrollY, scrollRunnable.getScrollY());
 
         // jump to the top
-        assertTrue(pageUpOnUiThread(true));
-        assertEquals(topScrollY, mWebView.getScrollY());
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                assertTrue(mWebView.pageUp(true));
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+        runTestOnUiThread(scrollRunnable);
+        assertEquals(topScrollY, scrollRunnable.getScrollY());
     }
 
     @TestTargetNew(
@@ -1153,60 +1471,57 @@
         method = "getContentHeight",
         args = {}
     )
-    public void testGetContentHeight() throws InterruptedException {
-        mWebView.loadData("<html><body></body></html>", "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-        assertEquals(mWebView.getHeight(), mWebView.getContentHeight() * mWebView.getScale(), 2f);
+    public void testGetContentHeight() throws Throwable {
+        final class HeightRunnable implements Runnable {
+            private int mHeight;
+            private int mContentHeight;
+            public void run() {
+                mHeight = mWebView.getHeight();
+                mContentHeight = mWebView.getContentHeight();
+            }
+            public int getHeight() {
+                return mHeight;
+            }
+            public int getContentHeight() {
+                return mContentHeight;
+            }
+        }
 
-        final int pageHeight = 600;
-        // set the margin to 0
-        String p = "<p style=\"height:" + pageHeight + "px;margin:0px auto;\">Get the height of "
-                + "HTML content.</p>";
-        mWebView.loadData("<html><body>" + p + "</body></html>", "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-        assertTrue(mWebView.getContentHeight() > pageHeight);
-        int extraSpace = mWebView.getContentHeight() - pageHeight;
-
-        mWebView.loadData("<html><body>" + p + p + "</body></html>", "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-        assertEquals(pageHeight + pageHeight + extraSpace, mWebView.getContentHeight());
-    }
-
-    @TestTargetNew(
-        level = TestLevel.SUFFICIENT,
-        notes = "Cannot test whether the view is cleared.",
-        method = "clearView",
-        args = {}
-    )
-    public void testClearView() throws Throwable {
-        startWebServer(false);
-        String imgUrl = mWebServer.getAssetUrl(TestHtmlConstants.SMALL_IMG_URL);
-        mWebView.loadData("<html><body><img src=\"" + imgUrl + "\"/></body></html>",
-                "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-
-        AssetManager assets = getActivity().getAssets();
-        Bitmap b1 = BitmapFactory.decodeStream(assets.open(TestHtmlConstants.SMALL_IMG_URL));
-        b1 = b1.copy(Config.ARGB_8888, true);
-
-        Picture p = mWebView.capturePicture();
-        Bitmap b2 = Bitmap.createBitmap(p.getWidth(), p.getHeight(), Config.ARGB_8888);
-        p.draw(new Canvas(b2));
-        // the image is painted
-        assertTrue(checkBitmapInsideAnother(b1, b2));
-
-        mWebView.clearView();
         runTestOnUiThread(new Runnable() {
             public void run() {
-                mWebView.invalidate();
+                mWebView.loadData("<html><body></body></html>", "text/html", "UTF-8");
+                waitForLoadComplete();
             }
         });
         getInstrumentation().waitForIdleSync();
-        // Can not check whether method clearView() take effect by automatic testing:
-        // 1. Can not use getMeasuredHeight() and getMeasuredWidth() to
-        //    check that the onMeasure() returns 0
-        // 2. Can not use capturePicture() to check that the content has been cleared.
-        //    The result of capturePicture() is not updated after clearView() is called.
+
+        final int pageHeight = 600;
+        // set the margin to 0
+        final String p = "<p style=\"height:" + pageHeight
+                + "px;margin:0px auto;\">Get the height of HTML content.</p>";
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                assertEquals(mWebView.getHeight(), mWebView.getContentHeight() * mWebView.getScale(), 2f);
+                mWebView.loadData("<html><body>" + p + "</body></html>", "text/html", "UTF-8");
+                waitForLoadComplete();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+
+        HeightRunnable runnable = new HeightRunnable();
+        runTestOnUiThread(runnable);
+        assertTrue(runnable.getContentHeight() > pageHeight);
+        int extraSpace = runnable.getContentHeight() - pageHeight;
+
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.loadData("<html><body>" + p + p + "</body></html>", "text/html", "UTF-8");
+                waitForLoadComplete();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+        runTestOnUiThread(runnable);
+        assertEquals(pageHeight + pageHeight + extraSpace, runnable.getContentHeight());
     }
 
     @TestTargetNew(
@@ -1214,6 +1529,7 @@
         method = "clearCache",
         args = {boolean.class}
     )
+    @UiThreadTest
     public void testClearCache() throws Exception {
         final File cacheFileBaseDir = CacheManager.getCacheFileBaseDir();
         mWebView.clearCache(true);
@@ -1222,7 +1538,7 @@
         startWebServer(false);
         final String url = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
         mWebView.loadUrl(url);
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        waitForLoadComplete();
         new DelayedCheck(TEST_TIMEOUT) {
             @Override
             protected boolean check() {
@@ -1262,6 +1578,7 @@
             notes = "Cannot simulate data state or proxy changes"
         )
     })
+    @UiThreadTest
     public void testPlatformNotifications() {
         WebView.enablePlatformNotifications();
         WebView.disablePlatformNotifications();
@@ -1279,6 +1596,7 @@
             args = {boolean.class}
         )
     })
+    @UiThreadTest
     public void testAccessPluginList() {
         assertNotNull(WebView.getPluginList());
 
@@ -1291,6 +1609,7 @@
         method = "destroy",
         args = {}
     )
+    @UiThreadTest
     public void testDestroy() {
         // Create a new WebView, since we cannot call destroy() on a view in the hierarchy
         WebView localWebView = new WebView(getActivity());
@@ -1303,15 +1622,23 @@
         args = {int.class, int.class}
     )
     public void testFlingScroll() throws Throwable {
-        DisplayMetrics metrics = mWebView.getContext().getResources().getDisplayMetrics();
-        int dimension = 2 * Math.max(metrics.widthPixels, metrics.heightPixels);
-        String p = "<p style=\"height:" + dimension + "px;" +
-                "width:" + dimension + "px\">Test fling scroll.</p>";
-        mWebView.loadData("<html><body>" + p + "</body></html>", "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                DisplayMetrics metrics = mWebView.getContext().getResources().getDisplayMetrics();
+                int dimension = 2 * Math.max(metrics.widthPixels, metrics.heightPixels);
+                String p = "<p style=\"height:" + dimension + "px;" +
+                        "width:" + dimension + "px\">Test fling scroll.</p>";
+                mWebView.loadData("<html><body>" + p + "</body></html>", "text/html", "UTF-8");
+                waitForLoadComplete();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
 
-        int previousScrollX = mWebView.getScrollX();
-        int previousScrollY = mWebView.getScrollY();
+        ScrollRunnable runnable = new ScrollRunnable();
+        runTestOnUiThread(runnable);
+        int previousScrollX = runnable.getScrollX();
+        int previousScrollY = runnable.getScrollY();
+
         runTestOnUiThread(new Runnable() {
             public void run() {
                 mWebView.flingScroll(100, 100);
@@ -1320,20 +1647,23 @@
 
         int timeSlice = 500;
         Thread.sleep(timeSlice);
-        assertTrue(mWebView.getScrollX() > previousScrollX);
-        assertTrue(mWebView.getScrollY() > previousScrollY);
+        runTestOnUiThread(runnable);
+        assertTrue(runnable.getScrollX() > previousScrollX);
+        assertTrue(runnable.getScrollY() > previousScrollY);
 
-        previousScrollY = mWebView.getScrollY();
-        previousScrollX = mWebView.getScrollX();
+        previousScrollY = runnable.getScrollY();
+        previousScrollX = runnable.getScrollX();
         Thread.sleep(timeSlice);
-        assertTrue(mWebView.getScrollX() >= previousScrollX);
-        assertTrue(mWebView.getScrollY() >= previousScrollY);
+        runTestOnUiThread(runnable);
+        assertTrue(runnable.getScrollX() >= previousScrollX);
+        assertTrue(runnable.getScrollY() >= previousScrollY);
 
-        previousScrollY = mWebView.getScrollY();
-        previousScrollX = mWebView.getScrollX();
+        previousScrollY = runnable.getScrollY();
+        previousScrollX = runnable.getScrollX();
         Thread.sleep(timeSlice);
-        assertTrue(mWebView.getScrollX() >= previousScrollX);
-        assertTrue(mWebView.getScrollY() >= previousScrollY);
+        runTestOnUiThread(runnable);
+        assertTrue(runnable.getScrollX() >= previousScrollX);
+        assertTrue(runnable.getScrollY() >= previousScrollY);
     }
 
     @TestTargetNew(
@@ -1341,21 +1671,30 @@
         method = "requestFocusNodeHref",
         args = {android.os.Message.class}
     )
-    public void testRequestFocusNodeHref() throws InterruptedException {
-        String links = "<DL><p><DT><A HREF=\"" + TestHtmlConstants.HTML_URL1
+    public void testRequestFocusNodeHref() throws Throwable {
+        final String links = "<DL><p><DT><A HREF=\"" + TestHtmlConstants.HTML_URL1
                 + "\">HTML_URL1</A><DT><A HREF=\"" + TestHtmlConstants.HTML_URL2
                 + "\">HTML_URL2</A></DL><p>";
-        mWebView.loadData("<html><body>" + links + "</body></html>", "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.loadData("<html><body>" + links + "</body></html>", "text/html", "UTF-8");
+                waitForLoadComplete();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
 
         final HrefCheckHandler handler = new HrefCheckHandler(mWebView.getHandler().getLooper());
-        Message hrefMsg = new Message();
+        final Message hrefMsg = new Message();
         hrefMsg.setTarget(handler);
 
         // focus on first link
         handler.reset();
         getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
-        mWebView.requestFocusNodeHref(hrefMsg);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.requestFocusNodeHref(hrefMsg);
+            }
+        });
         new DelayedCheck() {
             @Override
             protected boolean check() {
@@ -1366,10 +1705,14 @@
 
         // focus on second link
         handler.reset();
-        hrefMsg = new Message();
-        hrefMsg.setTarget(handler);
+        final Message hrefMsg2 = new Message();
+        hrefMsg2.setTarget(handler);
         getInstrumentation().sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_DOWN);
-        mWebView.requestFocusNodeHref(hrefMsg);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.requestFocusNodeHref(hrefMsg2);
+            }
+        });
         new DelayedCheck() {
             @Override
             protected boolean check() {
@@ -1378,7 +1721,11 @@
         }.run();
         assertEquals(TestHtmlConstants.HTML_URL2, handler.getResultUrl());
 
-        mWebView.requestFocusNodeHref(null);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.requestFocusNodeHref(null);
+            }
+        });
     }
 
     @TestTargetNew(
@@ -1386,32 +1733,54 @@
         method = "requestImageRef",
         args = {android.os.Message.class}
     )
-    public void testRequestImageRef() throws Exception {
+    public void testRequestImageRef() throws Exception, Throwable {
+        final class GetLocationRunnable implements Runnable {
+            private int[] mLocation;
+            public void run() {
+                mLocation = new int[2];
+                mWebView.getLocationOnScreen(mLocation);
+            }
+            public int[] getLocation() {
+                return mLocation;
+            }
+        }
+
         AssetManager assets = getActivity().getAssets();
         Bitmap bitmap = BitmapFactory.decodeStream(assets.open(TestHtmlConstants.LARGE_IMG_URL));
         int imgWidth = bitmap.getWidth();
         int imgHeight = bitmap.getHeight();
 
         startWebServer(false);
-        String imgUrl = mWebServer.getAssetUrl(TestHtmlConstants.LARGE_IMG_URL);
-        mWebView.loadData("<html><title>Title</title><body><img src=\"" + imgUrl
-                + "\"/></body></html>", "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        final String imgUrl = mWebServer.getAssetUrl(TestHtmlConstants.LARGE_IMG_URL);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.loadData("<html><title>Title</title><body><img src=\"" + imgUrl
+                        + "\"/></body></html>", "text/html", "UTF-8");
+                waitForLoadComplete();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
 
         final HrefCheckHandler handler = new HrefCheckHandler(mWebView.getHandler().getLooper());
-        Message msg = new Message();
+        final Message msg = new Message();
         msg.setTarget(handler);
 
         // touch the image
         handler.reset();
-        int[] location = new int[2];
-        mWebView.getLocationOnScreen(location);
+        GetLocationRunnable runnable = new GetLocationRunnable();
+        runTestOnUiThread(runnable);
+        int[] location = runnable.getLocation();
+
         long time = SystemClock.uptimeMillis();
         getInstrumentation().sendPointerSync(
                 MotionEvent.obtain(time, time, MotionEvent.ACTION_DOWN,
                         location[0] + imgWidth / 2,
                         location[1] + imgHeight / 2, 0));
-        mWebView.requestImageRef(msg);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.requestImageRef(msg);
+            }
+        });
         new DelayedCheck() {
             @Override
             protected boolean check() {
@@ -1426,6 +1795,7 @@
         method = "debugDump",
         args = {}
     )
+    @UiThreadTest
     public void testDebugDump() {
         mWebView.debugDump();
     }
@@ -1436,62 +1806,79 @@
         args = {}
     )
     public void testGetHitTestResult() throws Throwable {
-        String anchor = "<p><a href=\"" + TestHtmlConstants.EXT_WEB_URL1
+        class HitTestResultRunnable implements Runnable {
+            private HitTestResult mHitTestResult;
+            public void run() {
+                mHitTestResult = mWebView.getHitTestResult();
+            }
+            public HitTestResult getHitTestResult() {
+                return mHitTestResult;
+            }
+        }
+
+        final String anchor = "<p><a href=\"" + TestHtmlConstants.EXT_WEB_URL1
                 + "\">normal anchor</a></p>";
-        String blankAnchor = "<p><a href=\"\">blank anchor</a></p>";
-        String form = "<p><form><input type=\"text\" name=\"Test\"><br>"
+        final String blankAnchor = "<p><a href=\"\">blank anchor</a></p>";
+        final String form = "<p><form><input type=\"text\" name=\"Test\"><br>"
                 + "<input type=\"submit\" value=\"Submit\"></form></p>";
         String phoneNo = "3106984000";
-        String tel = "<p><a href=\"tel:" + phoneNo + "\">Phone</a></p>";
+        final String tel = "<p><a href=\"tel:" + phoneNo + "\">Phone</a></p>";
         String email = "test@gmail.com";
-        String mailto = "<p><a href=\"mailto:" + email + "\">Email</a></p>";
+        final String mailto = "<p><a href=\"mailto:" + email + "\">Email</a></p>";
         String location = "shanghai";
-        String geo = "<p><a href=\"geo:0,0?q=" + location + "\">Location</a></p>";
-        mWebView.loadDataWithBaseURL("fake://home", "<html><body>" + anchor + blankAnchor + form
-                + tel + mailto + geo + "</body></html>", "text/html", "UTF-8", null);
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        final String geo = "<p><a href=\"geo:0,0?q=" + location + "\">Location</a></p>";
+
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.loadDataWithBaseURL("fake://home", "<html><body>" + anchor + blankAnchor + form
+                        + tel + mailto + geo + "</body></html>", "text/html", "UTF-8", null);
+                waitForLoadComplete();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+        HitTestResultRunnable runnable = new HitTestResultRunnable();
 
         // anchor
         moveFocusDown();
-        HitTestResult result = mWebView.getHitTestResult();
-        assertEquals(HitTestResult.SRC_ANCHOR_TYPE, result.getType());
-        assertEquals(TestHtmlConstants.EXT_WEB_URL1, result.getExtra());
+        runTestOnUiThread(runnable);
+        assertEquals(HitTestResult.SRC_ANCHOR_TYPE, runnable.getHitTestResult().getType());
+        assertEquals(TestHtmlConstants.EXT_WEB_URL1, runnable.getHitTestResult().getExtra());
 
         // blank anchor
         moveFocusDown();
-        result = mWebView.getHitTestResult();
-        assertEquals(HitTestResult.SRC_ANCHOR_TYPE, result.getType());
-        assertEquals("fake://home", result.getExtra());
+        runTestOnUiThread(runnable);
+        assertEquals(HitTestResult.SRC_ANCHOR_TYPE, runnable.getHitTestResult().getType());
+        assertEquals("fake://home", runnable.getHitTestResult().getExtra());
 
         // text field
         moveFocusDown();
-        result = mWebView.getHitTestResult();
-        assertEquals(HitTestResult.EDIT_TEXT_TYPE, result.getType());
-        assertNull(result.getExtra());
+        runTestOnUiThread(runnable);
+        assertEquals(HitTestResult.EDIT_TEXT_TYPE, runnable.getHitTestResult().getType());
+        assertNull(runnable.getHitTestResult().getExtra());
 
         // submit button
         moveFocusDown();
-        result = mWebView.getHitTestResult();
-        assertEquals(HitTestResult.UNKNOWN_TYPE, result.getType());
-        assertNull(result.getExtra());
+        runTestOnUiThread(runnable);
+        assertEquals(HitTestResult.UNKNOWN_TYPE, runnable.getHitTestResult().getType());
+        assertNull(runnable.getHitTestResult().getExtra());
 
         // phone number
         moveFocusDown();
-        result = mWebView.getHitTestResult();
-        assertEquals(HitTestResult.PHONE_TYPE, result.getType());
-        assertEquals(phoneNo, result.getExtra());
+        runTestOnUiThread(runnable);
+        assertEquals(HitTestResult.PHONE_TYPE, runnable.getHitTestResult().getType());
+        assertEquals(phoneNo, runnable.getHitTestResult().getExtra());
 
         // email
         moveFocusDown();
-        result = mWebView.getHitTestResult();
-        assertEquals(HitTestResult.EMAIL_TYPE, result.getType());
-        assertEquals(email, result.getExtra());
+        runTestOnUiThread(runnable);
+        assertEquals(HitTestResult.EMAIL_TYPE, runnable.getHitTestResult().getType());
+        assertEquals(email, runnable.getHitTestResult().getExtra());
 
         // geo address
         moveFocusDown();
-        result = mWebView.getHitTestResult();
-        assertEquals(HitTestResult.GEO_TYPE, result.getType());
-        assertEquals(location, result.getExtra());
+        runTestOnUiThread(runnable);
+        assertEquals(HitTestResult.GEO_TYPE, runnable.getHitTestResult().getType());
+        assertEquals(location, runnable.getHitTestResult().getExtra());
     }
 
     @TestTargetNew(
@@ -1499,29 +1886,58 @@
         method = "setInitialScale",
         args = {int.class}
     )
-    public void testSetInitialScale() throws InterruptedException {
-        String p = "<p style=\"height:1000px;width:1000px\">Test setInitialScale.</p>";
-        mWebView.loadData("<html><body>" + p + "</body></html>", "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-        final float defaultScale = getInstrumentation().getTargetContext().getResources().
-            getDisplayMetrics().density;
-        assertEquals(defaultScale, mWebView.getScale(), .01f);
+    public void testSetInitialScale() throws Throwable {
+        final String p = "<p style=\"height:1000px;width:1000px\">Test setInitialScale.</p>";
+        final float defaultScale =
+            getInstrumentation().getTargetContext().getResources().getDisplayMetrics().density;
 
-        mWebView.setInitialScale(0);
-        // modify content to fool WebKit into re-loading
-        mWebView.loadData("<html><body>" + p + "2" + "</body></html>", "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-        assertEquals(defaultScale, mWebView.getScale(), .01f);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.loadData("<html><body>" + p + "</body></html>", "text/html", "UTF-8");
+                waitForLoadComplete();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
 
-        mWebView.setInitialScale(50);
-        mWebView.loadData("<html><body>" + p + "3" + "</body></html>", "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-        assertEquals(0.5f, mWebView.getScale(), .02f);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                assertEquals(defaultScale, mWebView.getScale(), .01f);
 
-        mWebView.setInitialScale(0);
-        mWebView.loadData("<html><body>" + p + "4" + "</body></html>", "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-        assertEquals(defaultScale, mWebView.getScale(), .01f);
+                mWebView.setInitialScale(0);
+                // modify content to fool WebKit into re-loading
+                mWebView.loadData("<html><body>" + p + "2" + "</body></html>", "text/html", "UTF-8");
+                waitForLoadComplete();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                assertEquals(defaultScale, mWebView.getScale(), .01f);
+
+                mWebView.setInitialScale(50);
+                mWebView.loadData("<html><body>" + p + "3" + "</body></html>", "text/html", "UTF-8");
+                waitForLoadComplete();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                assertEquals(0.5f, mWebView.getScale(), .02f);
+
+                mWebView.setInitialScale(0);
+                mWebView.loadData("<html><body>" + p + "4" + "</body></html>", "text/html", "UTF-8");
+                waitForLoadComplete();
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                assertEquals(defaultScale, mWebView.getScale(), .01f);
+            }
+        });
     }
 
     @TestTargetNew(
@@ -1531,10 +1947,11 @@
         args = {}
     )
     @ToBeFixed(explanation = "Favicon is not loaded automatically.")
+    @UiThreadTest
     public void testGetFavicon() throws Exception {
         startWebServer(false);
         String url = mWebServer.getAssetUrl(TestHtmlConstants.TEST_FAVICON_URL);
-        assertLoadUrlSuccessfully(mWebView, url);
+        assertLoadUrlSuccessfully(url);
         mWebView.getFavicon();
         // ToBeFixed: Favicon is not loaded automatically.
         // assertNotNull(mWebView.getFavicon());
@@ -1545,19 +1962,20 @@
         method = "clearHistory",
         args = {}
     )
+    @UiThreadTest
     public void testClearHistory() throws Exception {
         startWebServer(false);
         String url1 = mWebServer.getAssetUrl(TestHtmlConstants.HTML_URL1);
         String url2 = mWebServer.getAssetUrl(TestHtmlConstants.HTML_URL2);
         String url3 = mWebServer.getAssetUrl(TestHtmlConstants.HTML_URL3);
 
-        assertLoadUrlSuccessfully(mWebView, url1);
+        assertLoadUrlSuccessfully(url1);
         delayedCheckWebBackForwardList(url1, 0, 1);
 
-        assertLoadUrlSuccessfully(mWebView, url2);
+        assertLoadUrlSuccessfully(url2);
         delayedCheckWebBackForwardList(url2, 1, 2);
 
-        assertLoadUrlSuccessfully(mWebView, url3);
+        assertLoadUrlSuccessfully(url3);
         delayedCheckWebBackForwardList(url3, 2, 3);
 
         mWebView.clearHistory();
@@ -1584,6 +2002,7 @@
         )
     })
     @ToBeFixed(explanation="Web history items do not get inflated after restore.")
+    @UiThreadTest
     public void testSaveAndRestoreState() throws Throwable {
         // nothing to save
         assertNull(mWebView.saveState(new Bundle()));
@@ -1594,11 +2013,11 @@
         String url3 = mWebServer.getAssetUrl(TestHtmlConstants.HTML_URL3);
 
         // make a history list
-        assertLoadUrlSuccessfully(mWebView, url1);
+        assertLoadUrlSuccessfully(url1);
         delayedCheckWebBackForwardList(url1, 0, 1);
-        assertLoadUrlSuccessfully(mWebView, url2);
+        assertLoadUrlSuccessfully(url2);
         delayedCheckWebBackForwardList(url2, 1, 2);
-        assertLoadUrlSuccessfully(mWebView, url3);
+        assertLoadUrlSuccessfully(url3);
         delayedCheckWebBackForwardList(url3, 2, 3);
 
         // save the list
@@ -1653,10 +2072,27 @@
         args = {WebViewClient.class}
     )
     public void testSetWebViewClient() throws Throwable {
-        final MockWebViewClient webViewClient = new MockWebViewClient();
-        mWebView.setWebViewClient(webViewClient);
+        final class MockWebViewClient extends WebViewClient {
+            private boolean mOnScaleChangedCalled = false;
+            @Override
+            public void onScaleChanged(WebView view, float oldScale, float newScale) {
+                super.onScaleChanged(view, oldScale, newScale);
+                mOnScaleChangedCalled = true;
+            }
+            public boolean onScaleChangedCalled() {
+                return mOnScaleChangedCalled;
+            }
+        }
 
+        final MockWebViewClient webViewClient = new MockWebViewClient();
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.setWebViewClient(webViewClient);
+            }
+        });
+        getInstrumentation().waitForIdleSync();
         assertFalse(webViewClient.onScaleChangedCalled());
+
         runTestOnUiThread(new Runnable() {
             public void run() {
                 mWebView.zoomIn();
@@ -1679,31 +2115,50 @@
         )
     })
     public void testAccessCertificate() throws Throwable {
+        final class MockWebViewClient extends WebViewClient {
+            @Override
+            public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
+                handler.proceed();
+            }
+        }
+
+        final class LoadCompleteWebChromeClient extends WebChromeClient {
+            @Override
+            public void onProgressChanged(WebView webView, int progress) {
+                super.onProgressChanged(webView, progress);
+                if (progress == 100) {
+                    notifyUiThreadDone();
+                }
+            }
+        }
+
+        startWebServer(true);
+        final String url = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
         runTestOnUiThread(new Runnable() {
             public void run() {
-                mWebView = new WebView(getActivity());
-                getActivity().setContentView(mWebView);
+                // need the client to handle error
+                mWebView.setWebViewClient(new MockWebViewClient());
+                mWebView.setWebChromeClient(new LoadCompleteWebChromeClient());
+                mWebView.setCertificate(null);
+                // attempt to load the url.
+                mWebView.loadUrl(url);
             }
         });
-        getInstrumentation().waitForIdleSync();
+        waitForUiThreadDone();
 
-        // need the client to handle error
-        mWebView.setWebViewClient(new MockWebViewClient());
-
-        mWebView.setCertificate(null);
-        startWebServer(true);
-        String url = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
-        // attempt to load the url.
-        mWebView.loadUrl(url);
-        new DelayedCheck(TEST_TIMEOUT) {
-            @Override
-            protected boolean check() {
-                return mWebView.getCertificate() != null;
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                new DelayedCheck(TEST_TIMEOUT) {
+                    @Override
+                    protected boolean check() {
+                        return mWebView.getCertificate() != null;
+                    }
+                }.run();
+                SslCertificate cert = mWebView.getCertificate();
+                assertNotNull(cert);
+                assertEquals("Android", cert.getIssuedTo().getUName());
             }
-        }.run();
-        SslCertificate cert = mWebView.getCertificate();
-        assertNotNull(cert);
-        assertEquals("Android", cert.getIssuedTo().getUName());
+        });
     }
 
     @TestTargetNew(
@@ -1712,6 +2167,7 @@
         method = "clearSslPreferences",
         args = {}
     )
+    @UiThreadTest
     public void testClearSslPreferences() {
         mWebView.clearSslPreferences();
     }
@@ -1722,11 +2178,15 @@
         args = {View.class, Rect.class, boolean.class}
     )
     public void testRequestChildRectangleOnScreen() throws Throwable {
-        DisplayMetrics metrics = mWebView.getContext().getResources().getDisplayMetrics();
-        final int dimension = 2 * Math.max(metrics.widthPixels, metrics.heightPixels);
-        String p = "<p style=\"height:" + dimension + "px;width:" + dimension + "px\">&nbsp;</p>";
-        mWebView.loadData("<html><body>" + p + "</body></html>", "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                DisplayMetrics metrics = mWebView.getContext().getResources().getDisplayMetrics();
+                final int dimension = 2 * Math.max(metrics.widthPixels, metrics.heightPixels);
+                String p = "<p style=\"height:" + dimension + "px;width:" + dimension + "px\">&nbsp;</p>";
+                mWebView.loadData("<html><body>" + p + "</body></html>", "text/html", "UTF-8");
+                waitForLoadComplete();
+            }
+        });
         getInstrumentation().waitForIdleSync();
 
         runTestOnUiThread(new Runnable() {
@@ -1734,6 +2194,8 @@
                 int origX = mWebView.getScrollX();
                 int origY = mWebView.getScrollY();
 
+                DisplayMetrics metrics = mWebView.getContext().getResources().getDisplayMetrics();
+                final int dimension = 2 * Math.max(metrics.widthPixels, metrics.heightPixels);
                 int half = dimension / 2;
                 Rect rect = new Rect(half, half, half + 1, half + 1);
                 assertTrue(mWebView.requestChildRectangleOnScreen(mWebView, rect, true));
@@ -1757,20 +2219,37 @@
     })
     @ToBeFixed(explanation="Mime type and content length passed to listener are incorrect.")
     public void testSetDownloadListener() throws Throwable {
+        final class MyDownloadListener implements DownloadListener {
+            public String url;
+            public String mimeType;
+            public long contentLength;
+            public String contentDisposition;
+            public boolean called;
+
+            public void onDownloadStart(String url, String userAgent, String contentDisposition,
+                    String mimetype, long contentLength) {
+                this.called = true;
+                this.url = url;
+                this.mimeType = mimetype;
+                this.contentLength = contentLength;
+                this.contentDisposition = contentDisposition;
+            }
+        }
+
         final String mimeType = "application/octet-stream";
         final int length = 100;
         final MyDownloadListener listener = new MyDownloadListener();
 
         startWebServer(false);
-        String url = mWebServer.getBinaryUrl(mimeType, length);
-        mWebView.setWebViewClient(new WebViewClient());
-        mWebView.setDownloadListener(listener);
-        mWebView.loadData("<html><body><a href=\"" + url + "\">link</a></body></html>",
-                "text/html", "UTF-8");
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
-        // focus on the link
+        final String url = mWebServer.getBinaryUrl(mimeType, length);
+
         runTestOnUiThread(new Runnable() {
             public void run() {
+                mWebView.setWebViewClient(new WebViewClient());
+                mWebView.setDownloadListener(listener);
+                mWebView.loadData("<html><body><a href=\"" + url + "\">link</a></body></html>",
+                        "text/html", "UTF-8");
+                waitForLoadComplete();
                 assertTrue(mWebView.requestFocus(View.FOCUS_DOWN, null));
             }
         });
@@ -1808,6 +2287,7 @@
         method = "setMapTrackballToArrowKeys",
         args = {boolean.class}
     )
+    @UiThreadTest
     public void testSetMapTrackballToArrowKeys() {
         mWebView.setMapTrackballToArrowKeys(true);
     }
@@ -1817,22 +2297,23 @@
         method = "setNetworkAvailable",
         args = {boolean.class}
     )
+    @UiThreadTest
     public void testSetNetworkAvailable() throws Exception {
         WebSettings settings = mWebView.getSettings();
         settings.setJavaScriptEnabled(true);
         startWebServer(false);
         String url = mWebServer.getAssetUrl(TestHtmlConstants.NETWORK_STATE_URL);
-        assertLoadUrlSuccessfully(mWebView, url);
+        assertLoadUrlSuccessfully(url);
         assertEquals("ONLINE", mWebView.getTitle());
 
         mWebView.setNetworkAvailable(false);
         mWebView.reload();
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        waitForLoadComplete();
         assertEquals("OFFLINE", mWebView.getTitle());
 
         mWebView.setNetworkAvailable(true);
         mWebView.reload();
-        waitForLoadComplete(mWebView, TEST_TIMEOUT);
+        waitForLoadComplete();
         assertEquals("ONLINE", mWebView.getTitle());
     }
 
@@ -1842,13 +2323,36 @@
         args = {WebChromeClient.class}
     )
     public void testSetWebChromeClient() throws Throwable {
-        final MockWebChromeClient webChromeClient = new MockWebChromeClient();
-        mWebView.setWebChromeClient(webChromeClient);
+        final class MockWebChromeClient extends WebChromeClient {
+            private boolean mOnProgressChanged = false;
+            @Override
+            public void onProgressChanged(WebView view, int newProgress) {
+                super.onProgressChanged(view, newProgress);
+                mOnProgressChanged = true;
+            }
+            public boolean onProgressChangedCalled() {
+                return mOnProgressChanged;
+            }
+        }
 
+        final MockWebChromeClient webChromeClient = new MockWebChromeClient();
+
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.setWebChromeClient(webChromeClient);
+            }
+        });
+        getInstrumentation().waitForIdleSync();
         assertFalse(webChromeClient.onProgressChangedCalled());
+
         startWebServer(false);
-        String url = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
-        mWebView.loadUrl(url);
+        final String url = mWebServer.getAssetUrl(TestHtmlConstants.HELLO_WORLD_URL);
+        runTestOnUiThread(new Runnable() {
+            public void run() {
+                mWebView.loadUrl(url);
+            }
+        });
+        getInstrumentation().waitForIdleSync();
 
         new DelayedCheck(TEST_TIMEOUT) {
             @Override
@@ -1955,44 +2459,11 @@
             args = {}
         )
     })
+    @UiThreadTest
     public void testInternals() {
         // Do not test these APIs. They are implementation details.
     }
 
-    private static class MockWebViewClient extends WebViewClient {
-        private boolean mOnScaleChangedCalled = false;
-
-        public boolean onScaleChangedCalled() {
-            return mOnScaleChangedCalled;
-        }
-
-        @Override
-        public void onScaleChanged(WebView view, float oldScale, float newScale) {
-            super.onScaleChanged(view, oldScale, newScale);
-            mOnScaleChangedCalled = true;
-        }
-
-        @Override
-        public void onReceivedSslError(WebView view, SslErrorHandler handler,
-                                       SslError error) {
-            handler.proceed();
-        }
-    }
-
-    private static class MockWebChromeClient extends WebChromeClient {
-        private boolean mOnProgressChanged = false;
-
-        public boolean onProgressChangedCalled() {
-            return mOnProgressChanged;
-        }
-
-        @Override
-        public void onProgressChanged(WebView view, int newProgress) {
-            super.onProgressChanged(view, newProgress);
-            mOnProgressChanged = true;
-        }
-    }
-
     private static class HrefCheckHandler extends Handler {
         private boolean mHadRecieved;
 
@@ -2022,44 +2493,6 @@
         }
     }
 
-    private static class DocumentHasImageCheckHandler extends Handler {
-        private boolean mReceived;
-
-        private int mMsgArg1;
-
-        public DocumentHasImageCheckHandler(Looper looper) {
-            super(looper);
-        }
-
-        public boolean hasCalledHandleMessage() {
-            return mReceived;
-        }
-
-        public int getMsgArg1() {
-            return mMsgArg1;
-        }
-
-        public void reset(){
-            mMsgArg1 = -1;
-            mReceived = false;
-        }
-
-        @Override
-        public void handleMessage(Message msg) {
-            mReceived = true;
-            mMsgArg1 = msg.arg1;
-        }
-    };
-
-    private void findNextOnUiThread(final boolean forward) throws Throwable {
-        runTestOnUiThread(new Runnable() {
-            public void run() {
-                mWebView.findNext(forward);
-            }
-        });
-        getInstrumentation().waitForIdleSync();
-    }
-
     private void moveFocusDown() throws Throwable {
         // send down key and wait for idle
         sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);
@@ -2067,60 +2500,22 @@
         Thread.sleep(500);
     }
 
-    private boolean pageDownOnUiThread(final boolean bottom) throws Throwable {
-        PageDownRunner runner = new PageDownRunner(bottom);
-        runTestOnUiThread(runner);
-        getInstrumentation().waitForIdleSync();
-        return runner.mResult;
-    }
-
-    private class PageDownRunner implements Runnable {
-        private boolean mResult, mBottom;
-
-        public PageDownRunner(boolean bottom) {
-            mBottom = bottom;
-        }
-
+    private final class ScrollRunnable implements Runnable {
+        private int mScrollX;
+        private int mScrollY;
+        @Override
         public void run() {
-            mResult = mWebView.pageDown(mBottom);
+            mScrollX = mWebView.getScrollX();
+            mScrollY = mWebView.getScrollY();
         }
-    }
-
-    private boolean pageUpOnUiThread(final boolean top) throws Throwable {
-        PageUpRunner runner = new PageUpRunner(top);
-        runTestOnUiThread(runner);
-        getInstrumentation().waitForIdleSync();
-        return runner.mResult;
-    }
-
-    private class PageUpRunner implements Runnable {
-        private boolean mResult, mTop;
-
-        public PageUpRunner(boolean top) {
-            this.mTop = top;
+        public int getScrollX() {
+            return mScrollX;
         }
-
-        public void run() {
-            mResult = mWebView.pageUp(mTop);
+        public int getScrollY() {
+            return mScrollY;
         }
     }
 
-    private void delayedCheckStopScrolling() {
-        new DelayedCheck() {
-            private int scrollY = mWebView.getScrollY();
-
-            @Override
-            protected boolean check() {
-                if (scrollY == mWebView.getScrollY()){
-                    return true;
-                } else {
-                    scrollY = mWebView.getScrollY();
-                    return false;
-                }
-            }
-        }.run();
-    }
-
     private void delayedCheckWebBackForwardList(final String currUrl, final int currIndex,
             final int size) {
         new DelayedCheck() {
@@ -2213,66 +2608,40 @@
         return true;
     }
 
-    private void assertLoadUrlSuccessfully(WebView webView, String url)
-            throws InterruptedException {
-        webView.loadUrl(url);
-        waitForLoadComplete(webView, TEST_TIMEOUT);
+    private void assertLoadUrlSuccessfully(String url) {
+        mWebView.loadUrl(url);
+        waitForLoadComplete();
     }
 
-    private void waitForLoadComplete(final WebView webView, long timeout)
-            throws InterruptedException {
-        new DelayedCheck(timeout) {
+    private void waitForLoadComplete() {
+        new DelayedCheck(TEST_TIMEOUT) {
             @Override
             protected boolean check() {
-                return webView.getProgress() == 100;
+                return mWebView.getProgress() == 100;
             }
         }.run();
-        Thread.sleep(TIME_FOR_LAYOUT);
-    }
-
-    private final class DummyJavaScriptInterface {
-        private boolean mTitleChanged;
-
-        private boolean hasChangedTitle() {
-            return mTitleChanged;
-        }
-
-        public void onLoad(String oldTitle) {
-            mWebView.getHandler().post(new Runnable() {
-                public void run() {
-                    mWebView.loadUrl("javascript:changeTitle(\"new title\")");
-                    mTitleChanged = true;
-                }
-            });
+        try {
+            Thread.sleep(TIME_FOR_LAYOUT);
+        } catch (InterruptedException e) {
+            Log.w(LOGTAG, "waitForLoadComplete() interrupted while sleeping for layout delay.");
         }
     }
 
-    private final class MyDownloadListener implements DownloadListener {
-        public String url;
-        public String mimeType;
-        public long contentLength;
-        public String contentDisposition;
-        public boolean called;
-
-        public void onDownloadStart(String url, String userAgent, String contentDisposition,
-                String mimetype, long contentLength) {
-            this.called = true;
-            this.url = url;
-            this.mimeType = mimetype;
-            this.contentLength = contentLength;
-            this.contentDisposition = contentDisposition;
-        }
+    private synchronized void notifyUiThreadDone() {
+        mIsUiThreadDone = true;
+        notify();
     }
 
-    private static class MyPictureListener implements PictureListener {
-        public int callCount;
-        public WebView webView;
-        public Picture picture;
-
-        public void onNewPicture(WebView view, Picture picture) {
-            this.callCount += 1;
-            this.webView = view;
-            this.picture = picture;
+    private synchronized void waitForUiThreadDone() throws InterruptedException {
+        while (!mIsUiThreadDone) {
+            try {
+                wait(TEST_TIMEOUT);
+            } catch (InterruptedException e) {
+                continue;
+            }
+            if (!mIsUiThreadDone) {
+                Assert.fail("Unexpected timeout");
+            }
         }
     }
 }
diff --git a/tests/tests/webkit/src/android/webkit/cts/WebView_HitTestResultTest.java b/tests/tests/webkit/src/android/webkit/cts/WebView_HitTestResultTest.java
deleted file mode 100644
index 3d6f124..0000000
--- a/tests/tests/webkit/src/android/webkit/cts/WebView_HitTestResultTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2009 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 android.webkit.cts;
-
-import dalvik.annotation.TestLevel;
-import dalvik.annotation.TestTargetClass;
-import dalvik.annotation.TestTargetNew;
-import dalvik.annotation.TestTargets;
-
-import android.test.ActivityInstrumentationTestCase2;
-import android.view.KeyEvent;
-import android.view.animation.cts.DelayedCheck;
-import android.webkit.WebView;
-import android.webkit.WebView.HitTestResult;
-
-@TestTargetClass(HitTestResult.class)
-public class WebView_HitTestResultTest
-        extends ActivityInstrumentationTestCase2<WebViewStubActivity> {
-    private static long TEST_TIMEOUT = 5000L;
-    private static long TIME_FOR_LAYOUT = 1000L;
-
-    public WebView_HitTestResultTest() {
-        super("com.android.cts.stub", WebViewStubActivity.class);
-    }
-
-    private void waitForLoading(final WebView webView, long timeout) throws InterruptedException {
-        new DelayedCheck(timeout) {
-            @Override
-            protected boolean check() {
-                return webView.getProgress() == 100;
-            }
-        }.run();
-        Thread.sleep(TIME_FOR_LAYOUT);
-    }
-
-    @TestTargets({
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            method = "getType",
-            args = {}
-        ),
-        @TestTargetNew(
-            level = TestLevel.COMPLETE,
-            method = "getExtra",
-            args = {}
-        )
-    })
-    public void testHitTestResult() throws InterruptedException {
-        WebView webView = getActivity().getWebView();
-        String anchor = "<p><a href=\"" + TestHtmlConstants.EXT_WEB_URL1
-                + "\">normal anchor</a></p>";
-        webView.loadDataWithBaseURL("fake://home", "<html><body>" + anchor
-                + "</body></html>", "text/html", "UTF-8", null);
-        waitForLoading(webView, TEST_TIMEOUT);
-
-        // anchor
-        sendKeys(KeyEvent.KEYCODE_DPAD_DOWN);
-        // extra sleep to make sure key has been fully handled
-        Thread.sleep(500);
-        HitTestResult result = webView.getHitTestResult();
-        assertEquals(HitTestResult.SRC_ANCHOR_TYPE, result.getType());
-        assertEquals(TestHtmlConstants.EXT_WEB_URL1, result.getExtra());
-    }
-}
diff --git a/tests/tests/widget/src/android/widget/cts/CheckedTextViewTest.java b/tests/tests/widget/src/android/widget/cts/CheckedTextViewTest.java
index f9c3b44..6e35567 100644
--- a/tests/tests/widget/src/android/widget/cts/CheckedTextViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/CheckedTextViewTest.java
@@ -326,7 +326,7 @@
 
         checkedTextView.setCheckMarkDrawable(0);
         assertEquals(basePaddingRight, checkedTextView.getPaddingRight());
-        assertTrue(checkedTextView.isLayoutRequested());
+        assertFalse(checkedTextView.isLayoutRequested());
     }
 
     @TestTargetNew(
diff --git a/tests/tests/widget/src/android/widget/cts/PopupWindowTest.java b/tests/tests/widget/src/android/widget/cts/PopupWindowTest.java
index 335c406..f6a1aa7 100644
--- a/tests/tests/widget/src/android/widget/cts/PopupWindowTest.java
+++ b/tests/tests/widget/src/android/widget/cts/PopupWindowTest.java
@@ -128,29 +128,17 @@
 
         new PopupWindow(mActivity, null, com.android.internal.R.attr.popupWindowStyle);
 
-        try {
-            mPopupWindow = new PopupWindow();
-            assertEquals(0, mPopupWindow.getWidth());
-            assertEquals(0, mPopupWindow.getHeight());
-            fail("Should throw NullPointerException");
-        } catch (NullPointerException e) {
-        }
+        mPopupWindow = new PopupWindow();
+        assertEquals(0, mPopupWindow.getWidth());
+        assertEquals(0, mPopupWindow.getHeight());
 
-        try {
-            mPopupWindow = new PopupWindow(50, 50);
-            assertEquals(50, mPopupWindow.getWidth());
-            assertEquals(50, mPopupWindow.getHeight());
-            fail("Should throw NullPointerException");
-        } catch (NullPointerException e) {
-        }
+        mPopupWindow = new PopupWindow(50, 50);
+        assertEquals(50, mPopupWindow.getWidth());
+        assertEquals(50, mPopupWindow.getHeight());
 
-        try {
-            mPopupWindow = new PopupWindow(-1, -1);
-            assertEquals(-1, mPopupWindow.getWidth());
-            assertEquals(-1, mPopupWindow.getHeight());
-            fail("Should throw NullPointerException");
-        } catch (NullPointerException e) {
-        }
+        mPopupWindow = new PopupWindow(-1, -1);
+        assertEquals(-1, mPopupWindow.getWidth());
+        assertEquals(-1, mPopupWindow.getHeight());
 
         TextView contentView = new TextView(mActivity);
         mPopupWindow = new PopupWindow(contentView);
diff --git a/tests/tests/widget/src/android/widget/cts/TextViewTest.java b/tests/tests/widget/src/android/widget/cts/TextViewTest.java
index 71b2dba..166eb81 100755
--- a/tests/tests/widget/src/android/widget/cts/TextViewTest.java
+++ b/tests/tests/widget/src/android/widget/cts/TextViewTest.java
@@ -44,7 +44,6 @@
 import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.os.Bundle;
-import android.os.Debug;
 import android.test.ActivityInstrumentationTestCase2;
 import android.test.TouchUtils;
 import android.test.UiThreadTest;
@@ -358,10 +357,10 @@
         mActivity.setContentView(R.layout.textview_gravity);
 
         mTextView = findTextView(R.id.gravity_default);
-        assertEquals(Gravity.TOP | Gravity.LEFT, mTextView.getGravity());
+        assertEquals(Gravity.TOP | Gravity.START, mTextView.getGravity());
 
         mTextView = findTextView(R.id.gravity_bottom);
-        assertEquals(Gravity.BOTTOM | Gravity.LEFT, mTextView.getGravity());
+        assertEquals(Gravity.BOTTOM | Gravity.START, mTextView.getGravity());
 
         mTextView = findTextView(R.id.gravity_right);
         assertEquals(Gravity.TOP | Gravity.RIGHT, mTextView.getGravity());
@@ -383,13 +382,13 @@
         assertEquals(Gravity.CENTER, mTextView.getGravity());
 
         mTextView.setGravity(Gravity.NO_GRAVITY);
-        assertEquals(Gravity.TOP | Gravity.LEFT, mTextView.getGravity());
+        assertEquals(Gravity.TOP | Gravity.START, mTextView.getGravity());
 
         mTextView.setGravity(Gravity.RIGHT);
         assertEquals(Gravity.TOP | Gravity.RIGHT, mTextView.getGravity());
 
         mTextView.setGravity(Gravity.FILL_VERTICAL);
-        assertEquals(Gravity.FILL_VERTICAL | Gravity.LEFT, mTextView.getGravity());
+        assertEquals(Gravity.FILL_VERTICAL | Gravity.START, mTextView.getGravity());
 
         //test negative input value.
         mTextView.setGravity(-1);
diff --git a/tests/tests/widget/src/android/widget/cts/ViewFlipperTest.java b/tests/tests/widget/src/android/widget/cts/ViewFlipperTest.java
index c8c03fd..98e807e 100644
--- a/tests/tests/widget/src/android/widget/cts/ViewFlipperTest.java
+++ b/tests/tests/widget/src/android/widget/cts/ViewFlipperTest.java
@@ -23,6 +23,7 @@
 import android.app.Activity;
 import android.content.Context;
 import android.test.ActivityInstrumentationTestCase;
+import android.test.UiThreadTest;
 import android.util.AttributeSet;
 import android.util.Xml;
 import android.view.View;
@@ -113,6 +114,7 @@
             args = {}
         )
     })
+    @UiThreadTest
     public void testViewFlipper() {
         ViewFlipper viewFlipper = (ViewFlipper) mActivity.findViewById(R.id.viewflipper_test);
 
diff --git a/tests/vm-tests-tf/AndroidManifest.xml b/tests/vm-tests-tf/AndroidManifest.xml
new file mode 100644
index 0000000..2a2f40a
--- /dev/null
+++ b/tests/vm-tests-tf/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+ * Copyright (C) 2007 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.
+ -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="android.core.vm-tests-tf">
+    <uses-permission android:name="android.permission.INTERNET" />
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="android.test.InstrumentationCoreTestRunner"
+                     android:targetPackage="android.core.vm-tests-tf"
+                     android:label="cts trade federation vm tests"/>
+
+</manifest>
diff --git a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java
index d6a218e..2923ba2 100644
--- a/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java
+++ b/tools/cts-api-coverage/src/com/android/cts/apicoverage/CtsApiCoverage.java
@@ -58,6 +58,7 @@
         System.out.println("  -o FILE              output file or standard out if not given");
         System.out.println("  -f [txt|xml|html]    format of output");
         System.out.println("  -d PATH              path to dexdeps or expected to be in $PATH");
+        System.out.println("  -a PATH              path to the API XML file");
         System.out.println();
         System.exit(1);
     }
@@ -67,6 +68,7 @@
         File outputFile = null;
         int format = FORMAT_TXT;
         String dexDeps = "dexDeps";
+        String apiXmlPath = "";
 
         for (int i = 0; i < args.length; i++) {
             if (args[i].startsWith("-")) {
@@ -85,6 +87,8 @@
                     }
                 } else if ("-d".equals(args[i])) {
                     dexDeps = getExpectedArg(args, ++i);
+                } else if ("-a".equals(args[i])) {
+                    apiXmlPath = getExpectedArg(args, ++i);
                 } else {
                     printUsage();
                 }
@@ -104,7 +108,7 @@
          * 3. Output a report based on the coverage stats in the ApiCoverage object.
          */
 
-        ApiCoverage apiCoverage = getEmptyApiCoverage();
+        ApiCoverage apiCoverage = getEmptyApiCoverage(apiXmlPath);
         for (File testApk : testApks) {
             addApiCoverage(apiCoverage, testApk, dexDeps);
         }
@@ -125,16 +129,17 @@
      * Creates an object representing the API that will be used later to collect coverage
      * statistics as we iterate over the test APKs.
      *
+     * @param apiXmlPath to the API XML file
      * @return an {@link ApiCoverage} object representing the API in current.xml without any
      *     coverage statistics yet
      */
-    private static ApiCoverage getEmptyApiCoverage()
+    private static ApiCoverage getEmptyApiCoverage(String apiXmlPath)
             throws SAXException, IOException {
         XMLReader xmlReader = XMLReaderFactory.createXMLReader();
         CurrentXmlHandler currentXmlHandler = new CurrentXmlHandler();
         xmlReader.setContentHandler(currentXmlHandler);
 
-        File currentXml = new File("frameworks/base/api/current.xml");
+        File currentXml = new File(apiXmlPath);
         FileReader fileReader = null;
         try {
             fileReader = new FileReader(currentXml);
diff --git a/tools/dasm/src/dasm/DAsm.java b/tools/dasm/src/dasm/DAsm.java
index 2b58705..d298689 100644
--- a/tools/dasm/src/dasm/DAsm.java
+++ b/tools/dasm/src/dasm/DAsm.java
@@ -16,6 +16,7 @@
 
 package dasm;
 
+import com.android.dx.dex.DexOptions;
 import com.android.dx.dex.code.ArrayData;
 import com.android.dx.dex.code.CodeAddress;
 import com.android.dx.dex.code.CstInsn;
@@ -51,7 +52,6 @@
 import com.android.dx.rop.cst.CstShort;
 import com.android.dx.rop.cst.CstString;
 import com.android.dx.rop.cst.CstType;
-import com.android.dx.rop.cst.CstUtf8;
 import com.android.dx.rop.type.StdTypeList;
 import com.android.dx.rop.type.Type;
 import com.android.dx.rop.type.TypeList;
@@ -82,6 +82,9 @@
     // number of errors reported in a file.
     int errors;
 
+    // options for dex output
+    DexOptions dexOptions = new DexOptions();
+
     // file being processed
     DexFile dexFile;
     int line_num;
@@ -143,7 +146,7 @@
      * output_finisher.
      */
     int current_insn_number;
-    Hashtable<Integer, CodeAddress> unprocessed_relative_goto_addr = 
+    Hashtable<Integer, CodeAddress> unprocessed_relative_goto_addr =
             new Hashtable<Integer, CodeAddress>();
 
     // fill-array-data data
@@ -325,7 +328,7 @@
                 .internClassName(class_name)), class_acc,
                 superclass_name != null ? CstType.intern(Type
                         .internClassName(superclass_name)) : null, tl,
-                new CstUtf8(source_name));
+                new CstString(source_name));
         dexFile.add(classDef);
         class_header = false;
     }
@@ -363,7 +366,7 @@
                     + ", " + access + ", "
                     + (value == null ? "null" : value.toString()) + ")");
 
-        CstNat nat = new CstNat(new CstUtf8(name), new CstUtf8(desc));
+        CstNat nat = new CstNat(new CstString(name), new CstString(desc));
         CstFieldRef field = new CstFieldRef(classDef.getThisClass(), nat);
         EncodedField ef = new EncodedField(field, access);
         if ((access & AccessFlags.ACC_STATIC) != 0) {
@@ -399,7 +402,7 @@
         current_insn_number = 0;
         regs_count = 1;
 
-        method_nat = new CstNat(new CstUtf8(name), new CstUtf8(descriptor));
+        method_nat = new CstNat(new CstString(name), new CstString(descriptor));
         if (method_nat.isClassInit()) access |= AccessFlags.ACC_STATIC;
         if (method_nat.isInstanceInit()) access |= AccessFlags.ACC_CONSTRUCTOR;
 
@@ -674,7 +677,7 @@
                         + v1 + ")");
             }
             RegisterSpec reg1_spec = RegisterSpec.make(reg1_num, Type.STRING);
-            Constant constant = new CstString(new CstUtf8(v2));
+            Constant constant = new CstString(v2);
             DalvInsn dalvInsn = new CstInsn(insn.opcode,
                     createSourcePosition(), RegisterSpecList.make(reg1_spec),
                     constant);
@@ -744,8 +747,8 @@
             } else {
                 // invoke-kind
                 String[] names = Utils.getClassMethodSignatureFromString(v2);
-                CstNat method_nat = new CstNat(new CstUtf8(names[1]),
-                        new CstUtf8(names[2]));
+                CstNat method_nat = new CstNat(new CstString(names[1]),
+                        new CstString(names[2]));
 
                 /*
                  * if(insn.args.compareToIgnoreCase(
@@ -818,8 +821,8 @@
             } else {
                 // invoke-kind/range
                 String[] names = Utils.getClassMethodSignatureFromString(v2);
-                CstNat method_nat = new CstNat(new CstUtf8(names[1]),
-                        new CstUtf8(names[2]));
+                CstNat method_nat = new CstNat(new CstString(names[1]),
+                        new CstString(names[2]));
 
                 /*
                  * if(insn.args.compareToIgnoreCase(
@@ -918,7 +921,7 @@
                 reg1_spec = RegisterSpec.make(reg1_num, Type.FLOAT);
                 constant = CstFloat.make(Float.floatToIntBits(v2.floatValue()));
             } else if (v2 instanceof Double
-                    || (v2 instanceof Float && 
+                    || (v2 instanceof Float &&
                             insn.opcode.getFormat() == Form51l.THE_ONE)) {
                 reg1_spec = RegisterSpec.make(reg1_num, Type.DOUBLE);
                 constant = CstDouble.make(Double.doubleToLongBits(v2
@@ -1029,8 +1032,8 @@
 
             String[] names = Utils.getClassFieldFromString(v2);
 
-            CstNat field_nat = new CstNat(new CstUtf8(names[1]),
-                    new CstUtf8(v3));
+            CstNat field_nat = new CstNat(new CstString(names[1]),
+                    new CstString(v3));
 
             Constant constant = new CstFieldRef(CstType.intern(Type
                     .internClassName(names[0])), field_nat);
@@ -1101,8 +1104,8 @@
 
             String[] names = Utils.getClassFieldFromString(v3);
 
-            CstNat field_nat = new CstNat(new CstUtf8(names[1]),
-                    new CstUtf8(v4));
+            CstNat field_nat = new CstNat(new CstString(names[1]),
+                    new CstString(v4));
 
             Constant constant = new CstFieldRef(CstType.intern(Type
                     .internClassName(names[0])), field_nat);
@@ -1491,7 +1494,7 @@
      * Creates instance of SourcePosition for current line
      */
     protected SourcePosition createSourcePosition() {
-        return new SourcePosition(new CstUtf8(filename), -1, line_num);
+        return new SourcePosition(new CstString(filename), -1, line_num);
     }
 
     /**
@@ -1517,7 +1520,7 @@
      */
     private void createOutputFinisher() {
         if (output_finisher == null)
-            output_finisher = new OutputFinisher(5, regs_count);
+            output_finisher = new OutputFinisher(dexOptions, 5, regs_count);
     }
 
     /**
@@ -1576,7 +1579,7 @@
      * Parses a .d file, converting it internally into a binary representation.
      * If something goes wrong, this throws one of an IOException, or a
      * dasmError, or one of a few other exceptions.
-     * 
+     *
      * @param input
      *            is the stream containing the Dalvik assembly code for the
      *            class.
@@ -1597,7 +1600,7 @@
         source_name = name;
         class_header = false;
         classDef = null;
-        dexFile = new DexFile();
+        dexFile = new DexFile(dexOptions);
 
         scanner = new Scanner(input);
         parser parse_obj = new parser(this, scanner);
diff --git a/tools/dasm/src/dasm/DopInfo.java b/tools/dasm/src/dasm/DopInfo.java
index 8939399..c6a0aa7 100644
--- a/tools/dasm/src/dasm/DopInfo.java
+++ b/tools/dasm/src/dasm/DopInfo.java
@@ -16,7 +16,6 @@
 
 package dasm;
 
-import com.android.dx.dex.code.DalvOps;
 import com.android.dx.dex.code.Dop;
 import com.android.dx.dex.code.Dops;
 import com.android.dx.dex.code.InsnFormat;
@@ -44,6 +43,7 @@
 import com.android.dx.dex.code.form.Form35c;
 import com.android.dx.dex.code.form.Form3rc;
 import com.android.dx.dex.code.form.Form51l;
+import com.android.dx.io.Opcodes;
 
 import java.util.Hashtable;
 
@@ -135,24 +135,24 @@
         if (format instanceof Form21h) return ARG_REG_LITERAL;
         if (format instanceof Form21c) {
             switch (dop.getOpcode()) {
-            case DalvOps.CONST_CLASS:
-            case DalvOps.CHECK_CAST:
-            case DalvOps.NEW_INSTANCE:
+            case Opcodes.CONST_CLASS:
+            case Opcodes.CHECK_CAST:
+            case Opcodes.NEW_INSTANCE:
                 return ARG_REG_TYPE;
-            case DalvOps.SGET:
-            case DalvOps.SGET_WIDE:
-            case DalvOps.SGET_OBJECT:
-            case DalvOps.SGET_BOOLEAN:
-            case DalvOps.SGET_BYTE:
-            case DalvOps.SGET_CHAR:
-            case DalvOps.SGET_SHORT:
-            case DalvOps.SPUT:
-            case DalvOps.SPUT_WIDE:
-            case DalvOps.SPUT_OBJECT:
-            case DalvOps.SPUT_BOOLEAN:
-            case DalvOps.SPUT_BYTE:
-            case DalvOps.SPUT_CHAR:
-            case DalvOps.SPUT_SHORT:
+            case Opcodes.SGET:
+            case Opcodes.SGET_WIDE:
+            case Opcodes.SGET_OBJECT:
+            case Opcodes.SGET_BOOLEAN:
+            case Opcodes.SGET_BYTE:
+            case Opcodes.SGET_CHAR:
+            case Opcodes.SGET_SHORT:
+            case Opcodes.SPUT:
+            case Opcodes.SPUT_WIDE:
+            case Opcodes.SPUT_OBJECT:
+            case Opcodes.SPUT_BOOLEAN:
+            case Opcodes.SPUT_BYTE:
+            case Opcodes.SPUT_CHAR:
+            case Opcodes.SPUT_SHORT:
                 return ARG_REG_FIELD;
             default:
                 return ARG_REG_STRING;
@@ -164,23 +164,23 @@
         if (format instanceof Form22s) return ARG_REG_REG_LITERAL;
         if (format instanceof Form22c) {
             switch (dop.getOpcode()) {
-            case DalvOps.INSTANCE_OF:
-            case DalvOps.NEW_ARRAY:
+            case Opcodes.INSTANCE_OF:
+            case Opcodes.NEW_ARRAY:
                 return ARG_REG_REG_TYPE;
-            case DalvOps.IGET:
-            case DalvOps.IGET_WIDE:
-            case DalvOps.IGET_OBJECT:
-            case DalvOps.IGET_BOOLEAN:
-            case DalvOps.IGET_BYTE:
-            case DalvOps.IGET_CHAR:
-            case DalvOps.IGET_SHORT:
-            case DalvOps.IPUT:
-            case DalvOps.IPUT_WIDE:
-            case DalvOps.IPUT_OBJECT:
-            case DalvOps.IPUT_BOOLEAN:
-            case DalvOps.IPUT_BYTE:
-            case DalvOps.IPUT_CHAR:
-            case DalvOps.IPUT_SHORT:
+            case Opcodes.IGET:
+            case Opcodes.IGET_WIDE:
+            case Opcodes.IGET_OBJECT:
+            case Opcodes.IGET_BOOLEAN:
+            case Opcodes.IGET_BYTE:
+            case Opcodes.IGET_CHAR:
+            case Opcodes.IGET_SHORT:
+            case Opcodes.IPUT:
+            case Opcodes.IPUT_WIDE:
+            case Opcodes.IPUT_OBJECT:
+            case Opcodes.IPUT_BOOLEAN:
+            case Opcodes.IPUT_BYTE:
+            case Opcodes.IPUT_CHAR:
+            case Opcodes.IPUT_SHORT:
                 return ARG_REG_REG_FIELD;
             default:
                 return ARG_REG_REG_STRING;
@@ -193,12 +193,12 @@
         if (format instanceof Form31c) return ARG_REG_STRING;
         if (format instanceof Form35c) {
             switch (dop.getOpcode()) {
-            case DalvOps.INVOKE_VIRTUAL:
-            case DalvOps.INVOKE_SUPER:
-            case DalvOps.INVOKE_DIRECT:
-            case DalvOps.INVOKE_STATIC:
+            case Opcodes.INVOKE_VIRTUAL:
+            case Opcodes.INVOKE_SUPER:
+            case Opcodes.INVOKE_DIRECT:
+            case Opcodes.INVOKE_STATIC:
                 return ARG_REGLIST_METHOD;
-            case DalvOps.INVOKE_INTERFACE:
+            case Opcodes.INVOKE_INTERFACE:
                 return ARG_REGLIST_INTFMETHOD;
             default:
                 return ARG_REGLIST_TYPE;
@@ -206,9 +206,9 @@
         }
         if (format instanceof Form3rc) {
             switch (dop.getOpcode()) {
-            case DalvOps.FILLED_NEW_ARRAY_RANGE:
+            case Opcodes.FILLED_NEW_ARRAY_RANGE:
                 return ARG_REGRANGE_TYPE;
-            case DalvOps.INVOKE_INTERFACE_RANGE:
+            case Opcodes.INVOKE_INTERFACE_RANGE:
                 return ARG_REGRANGE_INTFMETHOD;
             default:
                 return ARG_REGRANGE_METHOD;
@@ -228,7 +228,7 @@
     static {
         dopsTable = new Hashtable<String, DopInfo>();
 
-        for (int i = 0; i < DalvOps.MAX_VALUE - DalvOps.MIN_VALUE + 1; i++) {
+        for (int i = 0; i < Opcodes.MAX_VALUE - Opcodes.MIN_VALUE + 1; i++) {
             try {
                 Dop dop = Dops.get(i);
                 add(dop.getName(), dop, getArgsFormat(dop));
diff --git a/tools/dx-tests/etc/compileall b/tools/dx-tests/etc/compileall
index cb95b4e..57bcec6 100755
--- a/tools/dx-tests/etc/compileall
+++ b/tools/dx-tests/etc/compileall
@@ -71,8 +71,8 @@
 else
     echo "tmp/intermediates dir (rel): $tmpdir"
 fi
-rm -rf --preserve-root $javac_out
-rm -rf --preserve-root $javafiles
+rm -rf $javac_out
+rm -rf $javafiles
 
 # compile all files from javafiles
 echo "compiling all java files (with package dxc.junit.**)"
diff --git a/tools/dx-tests/etc/starttests b/tools/dx-tests/etc/starttests
index afa55a8..b062fe7 100755
--- a/tools/dx-tests/etc/starttests
+++ b/tools/dx-tests/etc/starttests
@@ -59,7 +59,7 @@
 fi
 
 datadir=/tmp/${USER}
-rm -rf --preserve-root $datadir/dalvik-cache
+rm -rf $datadir/dalvik-cache
 mkdir -p $datadir
 mkdir -p $datadir/dalvik-cache
 
@@ -209,7 +209,7 @@
         (( jallcnt += 1 ))   
     
     
-        rm -rf --preserve-root $dxtmpdir/*
+        rm -rf $dxtmpdir/*
         mkdir -p $dxtmpdir
         cd $dxtmpdir            
         
diff --git a/tools/host/src/com/android/cts/CTSCommand.java b/tools/host/src/com/android/cts/CTSCommand.java
index 7755f5c..a1a2222 100644
--- a/tools/host/src/com/android/cts/CTSCommand.java
+++ b/tools/host/src/com/android/cts/CTSCommand.java
@@ -45,4 +45,5 @@
     static final String OPTION_SESSION = "--session";
     static final String OPTION_CFG = "--config";
     static final String OPTION_DERIVED_PLAN = "--derivedplan";
+    static final String OPTION_QUICK = "-q";
 }
diff --git a/tools/host/src/com/android/cts/CommandParser.java b/tools/host/src/com/android/cts/CommandParser.java
index 74c3280..85f8c2c 100644
--- a/tools/host/src/com/android/cts/CommandParser.java
+++ b/tools/host/src/com/android/cts/CommandParser.java
@@ -54,7 +54,8 @@
     private static Set<String> sOptionsSet = new HashSet<String>(Arrays.asList(
             CTSCommand.OPTION_CFG, CTSCommand.OPTION_PACKAGE, CTSCommand.OPTION_PLAN,
             CTSCommand.OPTION_DEVICE, CTSCommand.OPTION_RESULT, CTSCommand.OPTION_E,
-            CTSCommand.OPTION_SESSION, CTSCommand.OPTION_TEST, CTSCommand.OPTION_DERIVED_PLAN));
+            CTSCommand.OPTION_SESSION, CTSCommand.OPTION_TEST, CTSCommand.OPTION_DERIVED_PLAN,
+            CTSCommand.OPTION_QUICK));
     private static HashMap<String, String> sOptionMap = new HashMap<String, String>();
     static {
         final String[] keys = new String[] {
@@ -71,7 +72,8 @@
                 CTSCommand.OPTION_SESSION,
                 CTSCommand.OPTION_T,
                 CTSCommand.OPTION_TEST,
-                CTSCommand.OPTION_DERIVED_PLAN};
+                CTSCommand.OPTION_DERIVED_PLAN,
+                CTSCommand.OPTION_QUICK};
 
         final String[] values = new String[] {
                 CTSCommand.OPTION_CFG,
@@ -87,7 +89,8 @@
                 CTSCommand.OPTION_SESSION,
                 CTSCommand.OPTION_TEST,
                 CTSCommand.OPTION_TEST,
-                CTSCommand.OPTION_DERIVED_PLAN};
+                CTSCommand.OPTION_DERIVED_PLAN,
+                CTSCommand.OPTION_QUICK};
 
         for (int i = 0; i < keys.length; i++) {
             sOptionMap.put(keys[i], values[i]);
diff --git a/tools/host/src/com/android/cts/HostConfig.java b/tools/host/src/com/android/cts/HostConfig.java
index fbea3a5..d42dcf4 100644
--- a/tools/host/src/com/android/cts/HostConfig.java
+++ b/tools/host/src/com/android/cts/HostConfig.java
@@ -230,9 +230,9 @@
     }
 
     /**
-     * Get the test package by the JAVA package name of the test package.
+     * Get the test package by the name of the test package.
      *
-     * @param packageName The JAVA package name.
+     * @param packageName The package name.
      * @return The test package.
      */
     public TestPackage getTestPackage(final String packageName) {
@@ -242,9 +242,11 @@
     /**
      * Load repositories.
      */
-    public void loadRepositories() throws NoSuchAlgorithmException {
+    public void loadRepositories(boolean quick) throws NoSuchAlgorithmException {
         loadTestPackages();
-        loadTestResults();
+        if (!quick) {
+            loadTestResults();
+        }
     }
 
     /**
@@ -273,7 +275,7 @@
     /**
      * Get the package binary name.
      *
-     * @param appPackageName The JAVA package name.
+     * @param appPackageName The package name.
      * @return The binary name of the package.
      */
     public String getPackageBinaryName(String appPackageName) {
@@ -529,7 +531,7 @@
                 }
             }
         }
-     }
+    }
 
     /**
      * Storing the information of case repository.
@@ -542,7 +544,7 @@
         /**
          * Get package names.
          *
-         * @return The JAVA package names.
+         * @return The package names.
          */
         public ArrayList<String> getPackageNames() {
             ArrayList<String> packageNames = new ArrayList<String>();
diff --git a/tools/host/src/com/android/cts/HostSideOnlyPackage.java b/tools/host/src/com/android/cts/HostSideOnlyPackage.java
index 0dab280..7ed31d5 100644
--- a/tools/host/src/com/android/cts/HostSideOnlyPackage.java
+++ b/tools/host/src/com/android/cts/HostSideOnlyPackage.java
@@ -36,7 +36,7 @@
             final String androidVersion, final String jarPath,
             final String appPackageName) {
         super(null, testPkgBinaryName, null, null, version,
-                androidVersion, jarPath, null, appPackageName);
+                androidVersion, jarPath, null, appPackageName, null);
     }
 
     /** {@inheritDoc} */
diff --git a/tools/host/src/com/android/cts/ReferenceAppTestPackage.java b/tools/host/src/com/android/cts/ReferenceAppTestPackage.java
index 0b6aa506..3a14855 100644
--- a/tools/host/src/com/android/cts/ReferenceAppTestPackage.java
+++ b/tools/host/src/com/android/cts/ReferenceAppTestPackage.java
@@ -64,7 +64,7 @@
             String appNameSpace, String appPackageName,
             String apkToTestName, String packageUnderTest) throws NoSuchAlgorithmException {
         super(instrumentationRunner, testPkgBinaryName, targetNameSpace, targetBinaryName, version,
-                androidVersion, jarPath, appNameSpace, appPackageName);
+                androidVersion, jarPath, appNameSpace, appPackageName, null);
         this.apkToTestName = apkToTestName;
         this.packageUnderTest = packageUnderTest;
     }
diff --git a/tools/host/src/com/android/cts/SignatureCheckPackage.java b/tools/host/src/com/android/cts/SignatureCheckPackage.java
index ddc06a0..485530e 100644
--- a/tools/host/src/com/android/cts/SignatureCheckPackage.java
+++ b/tools/host/src/com/android/cts/SignatureCheckPackage.java
@@ -61,7 +61,7 @@
             final String androidVersion, final String jarPath, final String appNameSpace,
             final String appPackageName) throws NoSuchAlgorithmException {
         super(instrumentationRunner, testPkgBinaryName, targetNameSpace, targetBinaryName, version,
-                androidVersion, jarPath, appNameSpace, appPackageName);
+                androidVersion, jarPath, appNameSpace, appPackageName, null);
     }
 
     /**
diff --git a/tools/host/src/com/android/cts/TestDevice.java b/tools/host/src/com/android/cts/TestDevice.java
index 6ac56a1..a90f6f1 100644
--- a/tools/host/src/com/android/cts/TestDevice.java
+++ b/tools/host/src/com/android/cts/TestDevice.java
@@ -890,7 +890,7 @@
         }
 
         String name = testPackage.getAppPackageName();
-        if ((javaPkgName != null) && (javaPkgName.length() != 0)) {
+        if ((javaPkgName != null) && !javaPkgName.isEmpty()) {
             name = javaPkgName;
         }
 
diff --git a/tools/host/src/com/android/cts/TestHost.java b/tools/host/src/com/android/cts/TestHost.java
index 52a0553..f0857a5 100644
--- a/tools/host/src/com/android/cts/TestHost.java
+++ b/tools/host/src/com/android/cts/TestHost.java
@@ -70,6 +70,7 @@
 
     private static TestHost sInstance;
     static MODE sMode = MODE.UNINITIALIZED;
+    private static boolean sQuick = false;
 
     public static void main(final String[] mainArgs) {
         CUIOutputStream.println("Android CTS version " + Version.asString());
@@ -349,6 +350,10 @@
                     }
                 }
             }
+
+            if (cp.containsKey(CTSCommand.OPTION_QUICK)) {
+                sQuick = true;
+            }
         }
 
         if ((cfgPath == null) || (cfgPath.length() == 0)) {
@@ -361,9 +366,12 @@
             if (loadConfig(filePath) == false) {
                 exit();
             }
+            if (sQuick) {
+                HostConfig.Ints.valueOf("postInstallWaitMs").setValue(1);
+            }
 
             Log.initLog(sConfig.getLogRoot());
-            sConfig.loadRepositories();
+            sConfig.loadRepositories(sQuick);
         } catch (Exception e) {
             Log.e("Error while parsing cts config file", e);
             exit();
@@ -459,7 +467,9 @@
         TestSessionLog sessionLog = ts.getSessionLog();
         ts.setTestDevice(device);
         ts.getDevice().installDeviceSetupApp();
-        sessionLog.setDeviceInfo(ts.getDevice().getDeviceInfo());
+        if (!sQuick) {
+            sessionLog.setDeviceInfo(ts.getDevice().getDeviceInfo());
+        }
 
         boolean finish = false;
         while (!finish) {
diff --git a/tools/host/src/com/android/cts/TestPackage.java b/tools/host/src/com/android/cts/TestPackage.java
index 8647ade..a332297 100644
--- a/tools/host/src/com/android/cts/TestPackage.java
+++ b/tools/host/src/com/android/cts/TestPackage.java
@@ -49,13 +49,18 @@
     public static final String FINISH = "finish";
     public static final String START = "start";
 
-    private String mName, mVersion, mAndroidVersion;
-    private String mTargetNameSpace, mTargetBinaryName, mInstrumentationRunner;
-    private Collection<TestSuite> mSuites;
+    private final String mName;
+    private final String mVersion;
+    private final String mAndroidVersion;
+    private final String mTargetNameSpace;
+    private final String mTargetBinaryName;
+    private final String mInstrumentationRunner;
+    private final Collection<TestSuite> mSuites;
     private String mDigest;
-    private String mJarPath;
-    private String mAppNameSpace;
-    private String mAppPackageName;
+    private final String mJarPath;
+    private final String mAppNameSpace;
+    private final String mAppPackageName;
+    private final String mJavaPackageFilter;
 
     protected TestSuite mCurrentTestSuite;
 
@@ -79,13 +84,14 @@
      * @param androidVersion The version of the Anroid platform allowed.
      * @param jarPath The host controller's jar path and file.
      * @param appNameSpace The package name space.
-     * @param appPackageName The Java package name of the test package.
+     * @param appPackageName The package name of the test package.
+     * @param javaPackageFilter The prefix used to select which Java packages to run
      */
     public TestPackage(final String instrumentationRunner,
             final String testPkgBinaryName, final String targetNameSpace,
             final String targetBinaryName, final String version,
             final String androidVersion, final String jarPath, final String appNameSpace,
-            final String appPackageName) {
+            final String appPackageName, final String javaPackageFilter) {
         mInstrumentationRunner = instrumentationRunner;
         mName = testPkgBinaryName;
         mTargetNameSpace = targetNameSpace;
@@ -96,6 +102,7 @@
         mJarPath = jarPath;
         mAppNameSpace = appNameSpace;
         mAppPackageName = appPackageName;
+        mJavaPackageFilter = javaPackageFilter;
 
         mDevice = null;
         mTestStop = false;
@@ -114,9 +121,9 @@
     }
 
     /**
-     * Get the app JAVA package name.
+     * Get the app package name.
      *
-     * @return The app JAVA package name.
+     * @return The app package name.
      */
     public String getAppPackageName() {
         return mAppPackageName;
@@ -858,7 +865,7 @@
         mTimeOutTimer.start();
         mProgressObserver = new ProgressObserver();
 
-        if ((javaPkgName != null) && (javaPkgName.length() > 0)) {
+        if ((javaPkgName != null) && !javaPkgName.isEmpty()) {
             runInBatchModeImpl(javaPkgName);
         } else {
             for (String pkgName : getPackageNames()) {
@@ -995,14 +1002,15 @@
             return;
         }
 
-        setup(device, javaPkgName);
-        runImpl(javaPkgName);
+        String javaPackage = (javaPkgName != null) ? javaPkgName : mJavaPackageFilter;
+        setup(device, javaPackage);
+        runImpl(javaPackage);
     }
 
     /**
      * Implementation of running the test package.
      *
-     * @param javaPkgName The JAVA package name.
+     * @param javaPkgName The Java package name.
      * @param profile The profile of the device being tested.
      */
     protected void runImpl(final String javaPkgName) throws IOException,
@@ -1050,7 +1058,7 @@
      * Set up before running.
      *
      * @param device The device to run this package.getName
-     * @param javaPkgName The JAVA package name.
+     * @param javaPkgName The Java package name.
      */
     protected void setup(final TestDevice device, final String javaPkgName) {
         if (!TestSession.isADBServerRestartedMode() || noTestsExecuted()) {
diff --git a/tools/host/src/com/android/cts/TestSessionBuilder.java b/tools/host/src/com/android/cts/TestSessionBuilder.java
index de937a6..fd520a7 100644
--- a/tools/host/src/com/android/cts/TestSessionBuilder.java
+++ b/tools/host/src/com/android/cts/TestSessionBuilder.java
@@ -65,6 +65,7 @@
     private static final String ATTRIBUTE_FRAMEWORK_VERSION = "AndroidFramework";
     private static final String ATTRIBUTE_APK_TO_TEST_NAME = "apkToTestName";
     private static final String ATTRIBUTE_PACKAGE_TO_TEST = "packageToTest";
+    private static final String ATTRIBUTE_JAVA_PACKAGE_FILTER = "javaPackageFilter";
     private static TestSessionBuilder sInstance;
 
     private DocumentBuilder mDocBuilder;
@@ -208,22 +209,21 @@
     public TestPackage loadPackage(final Node pkgNode, ArrayList<String> excludedList)
                                 throws NoSuchAlgorithmException {
 
-        String appBinaryName, targetNameSpace, targetBinaryName, version, frameworkVersion,
-               runner, jarPath, appNameSpace, appPackageName, hostSideOnly;
         NodeList suiteList = pkgNode.getChildNodes();
 
-        appBinaryName = getStringAttributeValue(pkgNode, ATTRIBUTE_NAME);
-        targetNameSpace = getStringAttributeValue(pkgNode, ATTRIBUTE_TARGET_NAME_SPACE);
-        targetBinaryName = getStringAttributeValue(pkgNode, ATTRIBUTE_TARGET_BINARY_NAME);
-        version = getStringAttributeValue(pkgNode, ATTRIBUTE_VERSION);
-        frameworkVersion = getStringAttributeValue(pkgNode, ATTRIBUTE_FRAMEWORK_VERSION);
-        runner = getStringAttributeValue(pkgNode, ATTRIBUTE_RUNNER);
-        jarPath = getStringAttributeValue(pkgNode, ATTRIBUTE_JAR_PATH);
-        appNameSpace = getStringAttributeValue(pkgNode, ATTRIBUTE_APP_NAME_SPACE);
-        appPackageName = getStringAttributeValue(pkgNode, ATTRIBUTE_APP_PACKAGE_NAME);
-        hostSideOnly = getStringAttributeValue(pkgNode, ATTRIBUTE_HOST_SIDE_ONLY);
+        String appBinaryName = getStringAttributeValue(pkgNode, ATTRIBUTE_NAME);
+        String targetNameSpace = getStringAttributeValue(pkgNode, ATTRIBUTE_TARGET_NAME_SPACE);
+        String targetBinaryName = getStringAttributeValue(pkgNode, ATTRIBUTE_TARGET_BINARY_NAME);
+        String version = getStringAttributeValue(pkgNode, ATTRIBUTE_VERSION);
+        String frameworkVersion = getStringAttributeValue(pkgNode, ATTRIBUTE_FRAMEWORK_VERSION);
+        String runner = getStringAttributeValue(pkgNode, ATTRIBUTE_RUNNER);
+        String jarPath = getStringAttributeValue(pkgNode, ATTRIBUTE_JAR_PATH);
+        String appNameSpace = getStringAttributeValue(pkgNode, ATTRIBUTE_APP_NAME_SPACE);
+        String appPackageName = getStringAttributeValue(pkgNode, ATTRIBUTE_APP_PACKAGE_NAME);
+        String hostSideOnly = getStringAttributeValue(pkgNode, ATTRIBUTE_HOST_SIDE_ONLY);
         String signature = getStringAttributeValue(pkgNode, ATTRIBUTE_SIGNATURE_CHECK);
         String referenceAppTest = getStringAttributeValue(pkgNode, ATTRIBUTE_REFERENCE_APP_TEST);
+        String javaPackageFilter = getStringAttributeValue(pkgNode, ATTRIBUTE_JAVA_PACKAGE_FILTER);
         TestPackage pkg = null;
 
         if ("true".equals(referenceAppTest)) {
@@ -241,8 +241,8 @@
             pkg = new HostSideOnlyPackage(appBinaryName, version, frameworkVersion,
                     jarPath, appPackageName);
         } else {
-            pkg = new TestPackage(runner, appBinaryName, targetNameSpace, targetBinaryName,
-                    version, frameworkVersion, jarPath, appNameSpace, appPackageName);
+            pkg = new TestPackage(runner, appBinaryName, targetNameSpace, targetBinaryName, version,
+                    frameworkVersion, jarPath, appNameSpace, appPackageName, javaPackageFilter);
         }
 
         for (int i = 0; i < suiteList.getLength(); i++) {
diff --git a/tools/host/src/com/android/cts/TestSessionLog.java b/tools/host/src/com/android/cts/TestSessionLog.java
index bf5b3e8..7eb9ffd 100644
--- a/tools/host/src/com/android/cts/TestSessionLog.java
+++ b/tools/host/src/com/android/cts/TestSessionLog.java
@@ -489,7 +489,7 @@
         String[] processNames = rootProcesses.split(";");
         for (String processName : processNames) {
             processName = processName.trim();
-            if (processName.length() > 0) {
+            if (!processName.isEmpty()) {
                 Node process = document.createElement(TAG_PROCESS);
                 processInfo.appendChild(process);
 
diff --git a/tools/theme-test-tools/README.txt b/tools/theme-test-tools/README.txt
new file mode 100644
index 0000000..aef42b7
--- /dev/null
+++ b/tools/theme-test-tools/README.txt
@@ -0,0 +1,28 @@
+Copyright (C) 2011 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.
+
+
+README for the Theme Tests
+
+Located in themetestscripts.sh are a series of scripts that allow
+one to generate the "masters" for the theme tests. The tests require
+known-good versions (masters) of widgets, etc to compare against.
+The scripts will allow you to generate these masters for mdpi, hdpi
+and xhdpi devices.
+
+To properly generate these masters, a device of the needed density is
+required. Ie, an mdpi device for mdpi masters, etc.
+
+Additionally, to deal with large form-factors, mdpi will also do tests
+in a larger size. A large form-factor device is required.
diff --git a/tools/theme-test-tools/themetestscripts.sh b/tools/theme-test-tools/themetestscripts.sh
new file mode 100755
index 0000000..173eaa6
--- /dev/null
+++ b/tools/theme-test-tools/themetestscripts.sh
@@ -0,0 +1,127 @@
+# Copyright (C) 2011 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.
+
+#!/bin/bash
+# some simple scripts to automate theme test compiling and running
+
+# Allows a person developing the tests to very quickly run just the theme tests.
+# If you are doing this more than once, it is recommended that you open
+# cts/tests/Android.mk and comment out the line after the comment
+# "Build the test APK using its own makefile, and any other CTS-related packages".
+# Commenting out that line makes it so that you only build the necessary
+# theme tests, not all of CTS. Make sure that you do not check that modification
+# in, however.
+function rtt () {
+	if [ ! "$ANDROID_PRODUCT_OUT" ]; then
+	    echo "did you remember to lunch or tapas?" 1>&2;
+	    return;
+	fi;
+
+    croot && \
+	mmm cts/tests/ && \
+	mmm cts/tests/tests/theme/ && \
+	adb install -r $ANDROID_PRODUCT_OUT/data/app/CtsTestStubs.apk && \
+	adb install -r $ANDROID_PRODUCT_OUT/data/app/CtsThemeTestCases.apk && \
+	runtest -b --path cts/tests/tests/theme/src
+}
+
+# Builds the Theme Tests and installs them to the device.
+# Does not run the tests or generate the good versions.
+function tt () {
+	if [ ! "$ANDROID_PRODUCT_OUT" ]; then
+	    echo "did you remember to lunch or tapas?" 1>&2;
+	    return;
+	fi;
+
+	croot && \
+    adb root && \
+	mmm cts/tests/ && \
+	mmm cts/tests/tests/theme/ && \
+	adb install -r $ANDROID_PRODUCT_OUT/data/app/CtsTestStubs.apk && \
+	adb install -r $ANDROID_PRODUCT_OUT/data/app/CtsThemeTestCases.apk && \
+	adb shell rm -r data/data/com.android.cts.stub/files/
+}
+
+# Builds the theme tests and generates the masters for an xhdpi device.
+# Does not generate for large form factors (phones-only).
+function gttxhdpi () {
+	if [ ! "$ANDROID_PRODUCT_OUT" ]; then
+	    echo "did you remember to lunch or tapas?" 1>&2;
+	    return;
+	fi;
+
+	croot && \
+    adb root && \
+    mmm cts/tests/ && \
+    mmm cts/tests/tests/theme/ && \
+    adb install -r $ANDROID_PRODUCT_OUT/data/app/CtsTestStubs.apk && \
+    adb install -r $ANDROID_PRODUCT_OUT/data/app/CtsThemeTestCases.apk && \
+    adb shell rm -r data/data/com.android.cts.stub/files/ && \
+	adb shell am instrument -w -e class android.theme.cts.ThemeGenerator#generateThemeBitmaps com.android.cts.theme/android.test.InstrumentationCtsTestRunner && \
+    adb shell am instrument -w -e class android.theme.cts.ActivitySnapshotTests#generateActivityBitmaps com.android.cts.theme/android.test.InstrumentationCtsTestRunner && \
+    adb shell am instrument -w -e class android.theme.cts.SplitActivitySnapshotTests#generateActivityBitmaps com.android.cts.theme/android.test.InstrumentationCtsTestRunner && \
+	adb pull data/data/com.android.cts.stub/files/ /Volumes/Android/master/cts/tests/res/drawable-xhdpi/
+}
+
+# Builds the theme tests and generates the masters for an hdpi device.
+# Does not generate for large form factors (phones-only).
+function gtthdpi () {
+	if [ ! "$ANDROID_PRODUCT_OUT" ]; then
+	    echo "did you remember to lunch or tapas?" 1>&2;
+	    return;
+	fi;
+
+	croot && \
+    adb root && \
+    mmm cts/tests/ && \
+    mmm cts/tests/tests/theme/ && \
+    adb install -r $ANDROID_PRODUCT_OUT/data/app/CtsTestStubs.apk && \
+    adb install -r $ANDROID_PRODUCT_OUT/data/app/CtsThemeTestCases.apk && \
+    adb shell rm -r data/data/com.android.cts.stub/files/ && \
+	adb shell am instrument -w -e class android.theme.cts.ThemeGenerator#generateThemeBitmaps com.android.cts.theme/android.test.InstrumentationCtsTestRunner && \
+    adb shell am instrument -w -e class android.theme.cts.ActivitySnapshotTests#generateActivityBitmaps com.android.cts.theme/android.test.InstrumentationCtsTestRunner && \
+    adb shell am instrument -w -e class android.theme.cts.SplitActivitySnapshotTests#generateActivityBitmaps com.android.cts.theme/android.test.InstrumentationCtsTestRunner && \
+	adb pull data/data/com.android.cts.stub/files/ /Volumes/Android/master/cts/tests/res/drawable-hdpi/
+}
+
+# Builds the theme tests and generates the masters for an mdpi device.
+# Generate for large and small form factors (phones and tablets).
+# This assumes that the device that will be used to generate the tests
+# is a large form factor mdpi device (stingray or wingray).
+function gttmdpi () {
+	if [ ! "$ANDROID_PRODUCT_OUT" ]; then
+	    echo "did you remember to lunch or tapas?" 1>&2;
+	    return;
+	fi;
+
+	croot && \
+    adb root && \
+    mmm cts/tests/ && \
+    mmm cts/tests/tests/theme/ && \
+    adb install -r $ANDROID_PRODUCT_OUT/data/app/CtsTestStubs.apk && \
+    adb install -r $ANDROID_PRODUCT_OUT/data/app/CtsThemeTestCases.apk && \
+    adb shell rm -r data/data/com.android.cts.stub/files/ && \
+	adb shell am instrument -w -e class android.theme.cts.ThemeGenerator#generateThemeBitmaps com.android.cts.theme/android.test.InstrumentationCtsTestRunner && \
+	adb shell am instrument -w -e class android.theme.cts.ActivitySnapshotTests#generateActivityBitmaps com.android.cts.theme/android.test.InstrumentationCtsTestRunner && \
+	adb shell am instrument -w -e class android.theme.cts.SplitActivitySnapshotTests#generateActivityBitmaps com.android.cts.theme/android.test.InstrumentationCtsTestRunner && \
+	adb pull data/data/com.android.cts.stub/files/ cts/tests/res/drawable-large-mdpi/ && \
+	adb shell am display-size 800x480  && \
+	adb shell rm -r data/data/com.android.cts.stub/files/ && \
+	adb shell am instrument -w -e class android.theme.cts.ThemeGenerator#generateThemeBitmaps com.android.cts.theme/android.test.InstrumentationCtsTestRunner && \
+	adb shell am instrument -w -e class android.theme.cts.ActivitySnapshotTests#generateActivityBitmaps com.android.cts.theme/android.test.InstrumentationCtsTestRunner && \
+	adb shell am instrument -w -e class android.theme.cts.SplitActivitySnapshotTests#generateActivityBitmaps com.android.cts.theme/android.test.InstrumentationCtsTestRunner && \
+	adb pull data/data/com.android.cts.stub/files/ cts/tests/res/drawable-mdpi/ && \
+	adb shell am display-size reset
+
+}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildHelper.java b/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildHelper.java
index 4a2d56c..9bc0945 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildHelper.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/build/CtsBuildHelper.java
@@ -16,6 +16,7 @@
 
 package com.android.cts.tradefed.build;
 
+import com.android.tradefed.build.IBuildInfo;
 import com.android.tradefed.build.IFolderBuildInfo;
 
 import java.io.File;
@@ -57,6 +58,29 @@
     }
 
     /**
+     * A helper factory method that creates and validates a {@link CtsBuildHelper} given an
+     * {@link IBuildInfo}.
+     *
+     * @param build the {@link IBuildInfo}
+     * @return the {@link CtsBuildHelper}
+     * @throws IllegalArgumentException if provided <var>build</var> is not a valid CTS build
+     */
+    public static CtsBuildHelper createBuildHelper(IBuildInfo build) {
+        if (!(build instanceof IFolderBuildInfo)) {
+            throw new IllegalArgumentException(String.format(
+                    "Wrong build type. Expected %s, received %s", IFolderBuildInfo.class.getName(),
+                    build.getClass().getName()));
+        }
+        try {
+            CtsBuildHelper ctsBuild = new CtsBuildHelper((IFolderBuildInfo)build);
+            ctsBuild.validateStructure();
+            return ctsBuild;
+        } catch (FileNotFoundException e) {
+            throw new IllegalArgumentException("Invalid CTS build provided.", e);
+        }
+    }
+
+    /**
      * @return a {@link File} representing the parent folder of the CTS installation
      */
     public File getRootDir() {
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
index 2834793..eea5b0e 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/CtsTest.java
@@ -22,17 +22,18 @@
 import com.android.ddmlib.Log.LogLevel;
 import com.android.ddmlib.testrunner.TestIdentifier;
 import com.android.tradefed.build.IBuildInfo;
-import com.android.tradefed.build.IFolderBuildInfo;
 import com.android.tradefed.config.Option;
+import com.android.tradefed.config.Option.Importance;
 import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.device.ITestDevice;
 import com.android.tradefed.result.ITestInvocationListener;
+import com.android.tradefed.result.InputStreamSource;
+import com.android.tradefed.result.LogDataType;
 import com.android.tradefed.testtype.IBuildReceiver;
 import com.android.tradefed.testtype.IDeviceTest;
 import com.android.tradefed.testtype.IRemoteTest;
 import com.android.tradefed.testtype.IResumableTest;
 import com.android.tradefed.testtype.IShardableTest;
-import com.android.tradefed.testtype.InstrumentationTest;
 import com.android.tradefed.util.xml.AbstractXmlParser.ParseException;
 
 import java.io.BufferedInputStream;
@@ -66,36 +67,45 @@
 
     private ITestDevice mDevice;
 
-    @Option(name = PLAN_OPTION, description = "the test plan to run")
+    @Option(name = PLAN_OPTION, description = "the test plan to run.",
+            importance = Importance.IF_UNSET)
     private String mPlanName = null;
 
-    @Option(name = PACKAGE_OPTION, description = "the test packages(s) to run")
+    @Option(name = PACKAGE_OPTION, description = "the test packages(s) to run.",
+            importance = Importance.IF_UNSET)
     private Collection<String> mPackageNames = new ArrayList<String>();
 
-    @Option(name = "exclude-package", description = "the test packages(s) to exclude from the run")
+    @Option(name = "exclude-package", description = "the test packages(s) to exclude from the run.")
     private Collection<String> mExcludedPackageNames = new ArrayList<String>();
 
-    @Option(name = CLASS_OPTION, shortName = 'c', description = "run a specific test class")
+    @Option(name = CLASS_OPTION, shortName = 'c', description = "run a specific test class.",
+            importance = Importance.IF_UNSET)
     private String mClassName = null;
 
     @Option(name = METHOD_OPTION, shortName = 'm',
-            description = "run a specific test method, from given --class")
+            description = "run a specific test method, from given --class.",
+            importance = Importance.IF_UNSET)
     private String mMethodName = null;
 
     @Option(name = "collect-device-info", description =
-        "flag to control whether to collect info from device. Default true")
+        "flag to control whether to collect info from device. Turning this off will speed up test" +
+        "execution for short test runs but will result in required data being omitted from the " +
+        "test report.")
     private boolean mCollectDeviceInfo = true;
 
     @Option(name = "resume", description =
-        "flag to attempt to automatically resume aborted test run on another connected device. " +
-        "Default false.")
+        "flag to attempt to automatically resume aborted test run on another connected device. ")
     private boolean mResume = false;
 
     @Option(name = "shards", description =
         "shard the tests to run into separately runnable chunks to execute on multiple devices " +
-        "concurrently")
+        "concurrently.")
     private int mShards = 1;
 
+    @Option(name = "screenshot", description =
+        "flag for taking a screenshot of the device when test execution is complete.")
+    private boolean mScreenshot = false;
+
     /** data structure for a {@link IRemoteTest} and its known tests */
     private class KnownTests {
         private final IRemoteTest mTestForPackage;
@@ -119,6 +129,7 @@
     private List<KnownTests> mRemainingTests = null;
 
     private CtsBuildHelper mCtsBuild = null;
+    private IBuildInfo mBuildInfo = null;
 
     /**
      * {@inheritDoc}
@@ -201,17 +212,8 @@
      */
     @Override
     public void setBuild(IBuildInfo build) {
-        if (!(build instanceof IFolderBuildInfo)) {
-            throw new IllegalArgumentException(String.format(
-                    "Wrong build type. Expected %s, received %s", IFolderBuildInfo.class.getName(),
-                    build.getClass().getName()));
-        }
-        try {
-            mCtsBuild = new CtsBuildHelper((IFolderBuildInfo)build);
-            mCtsBuild.validateStructure();
-        } catch (FileNotFoundException e) {
-            throw new IllegalArgumentException("Invalid CTS build provided.", e);
-        }
+        mCtsBuild = CtsBuildHelper.createBuildHelper(build);
+        mBuildInfo = build;
     }
 
     /**
@@ -249,16 +251,23 @@
             if (test instanceof IDeviceTest) {
                 ((IDeviceTest)test).setDevice(getDevice());
             }
-            // Increment the timeout for collecting the tests.
-            // TODO: move this to testPackage.createTest() instead and only increase timeout when
-            // tests number is large.
-            if (test instanceof InstrumentationTest) {
-                ((InstrumentationTest)test).setCollectsTestsShellTimeout(10*60*1000);
+            if (test instanceof IBuildReceiver) {
+                ((IBuildReceiver)test).setBuild(mBuildInfo);
             }
+
             ResultFilter filter = new ResultFilter(listener, testPair.getKnownTests());
             test.run(filter);
             mRemainingTests.remove(0);
         }
+
+        if (mScreenshot) {
+            InputStreamSource screenshotSource = getDevice().getScreenshot();
+            try {
+                listener.testLog("screenshot", LogDataType.PNG, screenshotSource);
+            } finally {
+                screenshotSource.cancel();
+            }
+        }
     }
 
     /**
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/ITestPackageDef.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/ITestPackageDef.java
index e4f13b5..f4258d1 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/ITestPackageDef.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/ITestPackageDef.java
@@ -27,7 +27,7 @@
  * <p/>
  * Knows how to translate this info into a runnable {@link IRemoteTest}.
  */
-interface ITestPackageDef {
+public interface ITestPackageDef {
 
     /**
      * Get the unique URI of the test package.
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/InstrumentationApkTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/InstrumentationApkTest.java
new file mode 100644
index 0000000..e1bb91e
--- /dev/null
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/InstrumentationApkTest.java
@@ -0,0 +1,93 @@
+/*
+ * Copyright (C) 2011 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 com.android.cts.tradefed.testtype;
+
+import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.ddmlib.Log;
+import com.android.tradefed.build.IBuildInfo;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.result.ITestInvocationListener;
+import com.android.tradefed.testtype.IBuildReceiver;
+import com.android.tradefed.testtype.InstrumentationTest;
+
+import java.io.FileNotFoundException;
+import java.util.ArrayList;
+import java.util.Collection;
+
+import junit.framework.Assert;
+
+/**
+ * A {@link InstrumentationTest] that will install CTS apks before test execution,
+ * and uninstall on execution completion.
+ */
+public class InstrumentationApkTest extends InstrumentationTest implements IBuildReceiver {
+
+    private static final String LOG_TAG = "InstrumentationApkTest";
+
+    /** the file names of the CTS apks to install */
+    private Collection<String> mInstallFileNames = new ArrayList<String>();
+    private Collection<String> mUninstallPackages = new ArrayList<String>();
+
+    private CtsBuildHelper mCtsBuild = null;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setBuild(IBuildInfo build) {
+        mCtsBuild  = CtsBuildHelper.createBuildHelper(build);
+    }
+
+    /**
+     * Add an apk to install.
+     *
+     * @param apkFileName the apk file name
+     * @param packageName the apk's Android package name
+     */
+    public void addInstallApk(String apkFileName, String packageName) {
+        mInstallFileNames.add(apkFileName);
+        mUninstallPackages.add(packageName);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void run(final ITestInvocationListener listener)
+            throws DeviceNotAvailableException {
+        Assert.assertNotNull("missing device", getDevice());
+        Assert.assertNotNull("missing build", mCtsBuild);
+
+        try {
+            for (String apkFileName : mInstallFileNames) {
+                Log.d(LOG_TAG, String.format("Installing %s on %s", apkFileName,
+                        getDevice().getSerialNumber()));
+                try {
+                    getDevice().installPackage(mCtsBuild.getTestApp(apkFileName), true);
+                } catch (FileNotFoundException e) {
+                    Log.e(LOG_TAG, e);
+                }
+            }
+            super.run(listener);
+        } finally {
+            for (String packageName : mUninstallPackages) {
+                Log.d(LOG_TAG, String.format("Uninstalling %s on %s", packageName,
+                        getDevice().getSerialNumber()));
+                getDevice().uninstallPackage(packageName);
+            }
+        }
+    }
+}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/InstrumentationAppTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/InstrumentationAppTest.java
deleted file mode 100644
index 47fc14a..0000000
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/InstrumentationAppTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2011 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 com.android.cts.tradefed.testtype;
-
-import com.android.ddmlib.Log;
-import com.android.tradefed.device.DeviceNotAvailableException;
-import com.android.tradefed.result.ITestInvocationListener;
-import com.android.tradefed.testtype.InstrumentationTest;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-
-/**
- * A {@link InstrumentationTest] that will install other dependent apks before test execution,
- * and uninstall apps on execution completion.
- */
-public class InstrumentationAppTest extends InstrumentationTest {
-
-    private static final String LOG_TAG = "InstrumentationAppTest";
-
-    // TODO: consider moving this class to tradefed proper
-
-    private Collection<File> mInstallFiles = new ArrayList<File>();
-    private Collection<String> mInstallPackages = new ArrayList<String>();
-
-    /**
-     * Add a dependent apk to install.
-     *
-     * @param apkFile the apk file
-     * @param packageName the apk's Android package name
-     */
-    public void addInstallApp(File apkFile, String packageName) {
-        mInstallFiles.add(apkFile);
-        mInstallPackages.add(packageName);
-    }
-
-    @Override
-    public void run(final ITestInvocationListener listener)
-            throws DeviceNotAvailableException {
-        if (getDevice() == null) {
-            throw new IllegalStateException("missing device");
-        }
-        try {
-            for (File apkFile : mInstallFiles) {
-                Log.d(LOG_TAG, String.format("Installing %s on %s", apkFile.getName(),
-                        getDevice().getSerialNumber()));
-                getDevice().installPackage(apkFile, true);
-            }
-            super.run(listener);
-        } finally {
-            for (String packageName : mInstallPackages) {
-                Log.d(LOG_TAG, String.format("Uninstalling %s on %s", packageName,
-                        getDevice().getSerialNumber()));
-                getDevice().uninstallPackage(packageName);
-            }
-        }
-    }
-}
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/JarHostTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/JarHostTest.java
index 041079d..eed5223 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/JarHostTest.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/JarHostTest.java
@@ -15,12 +15,15 @@
  */
 package com.android.cts.tradefed.testtype;
 
+import com.android.cts.tradefed.build.CtsBuildHelper;
 import com.android.ddmlib.Log;
 import com.android.ddmlib.testrunner.TestIdentifier;
+import com.android.tradefed.build.IBuildInfo;
 import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.device.ITestDevice;
 import com.android.tradefed.result.ITestInvocationListener;
 import com.android.tradefed.result.JUnitToInvocationResultForwarder;
+import com.android.tradefed.testtype.IBuildReceiver;
 import com.android.tradefed.testtype.IDeviceTest;
 import com.android.tradefed.testtype.IRemoteTest;
 import com.android.tradefed.util.CommandStatus;
@@ -28,6 +31,7 @@
 import com.android.tradefed.util.RunUtil;
 
 import java.io.File;
+import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.net.URL;
 import java.net.URLClassLoader;
@@ -39,29 +43,68 @@
 import junit.framework.TestResult;
 
 /**
- * A {@link IRemoteTest} that can run a set of JUnit tests from a jar.
+ * A {@link IRemoteTest} that can run a set of JUnit tests from a CTS jar.
  */
-public class JarHostTest implements IDeviceTest, IRemoteTest {
+public class JarHostTest implements IDeviceTest, IRemoteTest, IBuildReceiver {
 
     private static final String LOG_TAG = "JarHostTest";
 
     private ITestDevice mDevice;
-    private File mJarFile;
+    private String mJarFileName;
     private Collection<TestIdentifier> mTests;
     private long mTimeoutMs = 10 * 60 * 1000;
     private String mRunName;
-    private String mTestAppPath;
+    private CtsBuildHelper mCtsBuild = null;
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void setBuild(IBuildInfo buildInfo) {
+        mCtsBuild = CtsBuildHelper.createBuildHelper(buildInfo);
+    }
+
+    /**
+     * Set the CTS build container.
+     * <p/>
+     * Exposed so unit tests can mock the provided build.
+     *
+     * @param buildHelper
+     */
+    void setBuildHelper(CtsBuildHelper buildHelper) {
+        mCtsBuild = buildHelper;
+    }
+
+    /**
+     * Get the CTS build container.
+     *
+     * @return {@link CtsBuildHelper}
+     */
+    CtsBuildHelper getBuildHelper() {
+        return mCtsBuild;
+    }
 
     /**
      * Set the jar file to load tests from.
-     * @param jarFile
+     *
+     * @param jarFileName the file name of the CTS host test jar to use
      */
-    void setJarFile(File jarFile) {
-        mJarFile = jarFile;
+    void setJarFileName(String jarFileName) {
+        mJarFileName = jarFileName;
+    }
+
+    /**
+     * Gets the jar file to load tests from.
+     *
+     * @return jarFileName the file name of the CTS host test jar to use
+     */
+    String getJarFileName() {
+        return mJarFileName;
     }
 
     /**
      * Sets the collection of tests to run
+     *
      * @param tests
      */
     void setTests(Collection<TestIdentifier> tests) {
@@ -69,6 +112,15 @@
     }
 
     /**
+     * Gets the collection of tests to run
+     *
+     * @return Collection<{@link TestIdentifier}>
+     */
+    Collection<TestIdentifier> getTests() {
+        return mTests;
+    }
+
+    /**
      * Set the maximum time in ms each test should run.
      * <p/>
      * Tests that take longer than this amount will be failed with a {@link TestTimeoutException}
@@ -90,17 +142,6 @@
     }
 
     /**
-     * Set the filesystem path to test app artifacts needed to run tests.
-     *
-     * @see {@link com.android.hosttest.DeviceTest#setTestAppPath(String)}
-     *
-     * @param testAppPath
-     */
-    void setTestAppPath(String testAppPath) {
-        mTestAppPath = testAppPath;
-    }
-
-    /**
      * {@inheritDoc}
      */
     @Override
@@ -153,9 +194,9 @@
             // all host tests are converted to use tradefed
             com.android.hosttest.DeviceTest deviceTest = (com.android.hosttest.DeviceTest)junitTest;
             deviceTest.setDevice(getDevice().getIDevice());
-            deviceTest.setTestAppPath(mTestAppPath);
+            deviceTest.setTestAppPath(mCtsBuild.getTestCasesDir().getAbsolutePath());
         }
-        CommandStatus status = RunUtil.getInstance().runTimed(mTimeoutMs, new IRunnableResult() {
+        CommandStatus status = RunUtil.getDefault().runTimed(mTimeoutMs, new IRunnableResult() {
 
             @Override
             public boolean run() throws Exception {
@@ -167,7 +208,7 @@
             public void cancel() {
                 // ignore
             }
-        });
+        }, true);
         if (status.equals(CommandStatus.TIMED_OUT)) {
             junitResult.addError(junitTest, new TestTimeoutException());
             junitResult.endTest(junitTest);
@@ -183,7 +224,8 @@
      */
     private Test loadTest(String className, String testName) {
         try {
-            URL urls[] = {mJarFile.getCanonicalFile().toURI().toURL()};
+            File jarFile = mCtsBuild.getTestApp(mJarFileName);
+            URL urls[] = {jarFile.getCanonicalFile().toURI().toURL()};
             Class<?> testClass = loadClass(className, urls);
 
             if (TestCase.class.isAssignableFrom(testClass)) {
@@ -195,16 +237,16 @@
                 return test;
             } else {
                 Log.e(LOG_TAG, String.format("Class '%s' from jar '%s' is not a Test",
-                        className, mJarFile.getAbsolutePath()));
+                        className, mJarFileName));
             }
         } catch (ClassNotFoundException e) {
-            reportLoadError(mJarFile, className, e);
+            reportLoadError(mJarFileName, className, e);
         } catch (IllegalAccessException e) {
-            reportLoadError(mJarFile, className, e);
+            reportLoadError(mJarFileName, className, e);
         } catch (IOException e) {
-            reportLoadError(mJarFile, className, e);
+            reportLoadError(mJarFileName, className, e);
         } catch (InstantiationException e) {
-            reportLoadError(mJarFile, className, e);
+            reportLoadError(mJarFileName, className, e);
         }
         return null;
     }
@@ -225,27 +267,37 @@
         return testClass;
     }
 
-    private void reportLoadError(File jarFile, String className, Exception e) {
+    private void reportLoadError(String jarFileName, String className, Exception e) {
         Log.e(LOG_TAG, String.format("Failed to load test class '%s' from jar '%s'",
-                className, jarFile.getAbsolutePath()));
+                className, jarFileName));
         Log.e(LOG_TAG, e);
     }
 
     /**
      * Checks that all mandatory member fields has been set.
      */
-    private void checkFields() {
+    protected void checkFields() {
         if (mRunName == null) {
             throw new IllegalArgumentException("run name has not been set");
         }
         if (mDevice == null) {
             throw new IllegalArgumentException("Device has not been set");
         }
-        if (mJarFile == null) {
-            throw new IllegalArgumentException("jar file has not been set");
+        if (mJarFileName == null) {
+            throw new IllegalArgumentException("jar file name has not been set");
         }
         if (mTests == null) {
             throw new IllegalArgumentException("tests has not been set");
         }
+        if (mCtsBuild == null) {
+            throw new IllegalArgumentException("build has not been set");
+        }
+        try {
+            mCtsBuild.getTestApp(mJarFileName);
+        } catch (FileNotFoundException e) {
+            throw new IllegalArgumentException(String.format(
+                    "Could not find jar %s in CTS build %s", mJarFileName,
+                    mCtsBuild.getRootDir().getAbsolutePath()));
+        }
     }
 }
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
index fd896f2..20396f7 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageDef.java
@@ -41,11 +41,13 @@
     private String mName = null;
     private String mRunner = null;
     private boolean mIsHostSideTest = false;
+    private boolean mIsVMHostTest = false;
     private String mJarPath = null;
     private boolean mIsSignatureTest = false;
     private boolean mIsReferenceAppTest = false;
     private String mPackageToTest = null;
     private String mApkToTestName = null;
+    private String mTestPackageName = null;
 
     // use a LinkedHashSet for predictable iteration insertion-order, and fast lookups
     private Collection<TestIdentifier> mTests = new LinkedHashSet<TestIdentifier>();
@@ -96,6 +98,14 @@
         return mIsHostSideTest;
     }
 
+    void setIsVMHostTest(boolean vmHostTest) {
+        mIsVMHostTest = vmHostTest;
+
+    }
+
+    boolean isVMHostTest() {
+        return mIsVMHostTest;
+    }
     void setJarPath(String jarPath) {
         mJarPath = jarPath;
     }
@@ -124,6 +134,10 @@
         mPackageToTest = packageName;
     }
 
+    void setTestPackageName(String testPackageName) {
+        mTestPackageName = testPackageName;
+    }
+
     void setApkToTest(String apkName) {
         mApkToTestName = apkName;
     }
@@ -136,16 +150,22 @@
             Log.d(LOG_TAG, String.format("Creating host test for %s", mName));
             JarHostTest hostTest = new JarHostTest();
             hostTest.setRunName(mName);
-            hostTest.setJarFile(new File(testCaseDir, mJarPath));
-            hostTest.setTestAppPath(testCaseDir.getAbsolutePath());
+            hostTest.setJarFileName(mJarPath);
             hostTest.setTests(filterTests(mTests, className, methodName));
             return hostTest;
+        } else if (mIsVMHostTest) {
+            Log.d(LOG_TAG, String.format("Creating vm host test for %s", mName));
+            VMHostTest vmHostTest = new VMHostTest();
+            vmHostTest.setRunName(mName);
+            vmHostTest.setJarFileName(mJarPath);
+            vmHostTest.setTests(filterTests(mTests, className, methodName));
+            return vmHostTest;
         } else if (mIsSignatureTest) {
             // TODO: hardcode the runner/class/method for now, since current package xml
             // points to specialized instrumentation. Eventually this special case for signatureTest
             // can be removed, and it can be treated just like a normal InstrumentationTest
             Log.d(LOG_TAG, String.format("Creating signature test %s", mName));
-            InstrumentationTest instrTest = new InstrumentationTest();
+            InstrumentationApkTest instrTest = new InstrumentationApkTest();
             instrTest.setPackageName(mAppNameSpace);
             instrTest.setRunnerName("android.test.InstrumentationTestRunner");
             instrTest.setClassName(SIGNATURE_TEST_CLASS);
@@ -153,34 +173,22 @@
             // add signature test to list of known tests
             addTest(new TestIdentifier(SIGNATURE_TEST_CLASS, SIGNATURE_TEST_METHOD));
             // mName means 'apk file name' for instrumentation tests
-            File apkFile = new File(testCaseDir, String.format("%s.apk", mName));
-            if (!apkFile.exists()) {
-                Log.w(LOG_TAG, String.format("Could not find apk file %s",
-                        apkFile.getAbsolutePath()));
-                return null;
-            }
-            instrTest.setInstallFile(apkFile);
+            instrTest.addInstallApk(String.format("%s.apk", mName), mAppNameSpace);
             return instrTest;
         } else if (mIsReferenceAppTest) {
             // a reference app test is just a InstrumentationTest with one extra apk to install
-            InstrumentationAppTest instrTest = new InstrumentationAppTest();
-            File apkFile = new File(testCaseDir, String.format("%s.apk", mApkToTestName));
-            if (!apkFile.exists()) {
-                Log.w(LOG_TAG, String.format("Could not find apk file %s",
-                        apkFile.getAbsolutePath()));
-                return null;
-            }
-            instrTest.addInstallApp(apkFile, mPackageToTest);
-            return setInstrumentationTest(testCaseDir, className, methodName, instrTest);
+            InstrumentationApkTest instrTest = new InstrumentationApkTest();
+            instrTest.addInstallApk(String.format("%s.apk", mApkToTestName), mPackageToTest);
+            return setInstrumentationTest(className, methodName, instrTest);
         } else {
             Log.d(LOG_TAG, String.format("Creating instrumentation test for %s", mName));
-            InstrumentationTest instrTest = new InstrumentationTest();
-            return setInstrumentationTest(testCaseDir, className, methodName, instrTest);
+            InstrumentationApkTest instrTest = new InstrumentationApkTest();
+            return setInstrumentationTest(className, methodName, instrTest);
         }
     }
 
     /**
-     * Populates given {@link InstrumentationTest} with data from the package xml
+     * Populates given {@link InstrumentationApkTest} with data from the package xml
      *
      * @param testCaseDir
      * @param className
@@ -188,20 +196,19 @@
      * @param instrTest
      * @return the populated {@link InstrumentationTest} or <code>null</code>
      */
-    private InstrumentationTest setInstrumentationTest(File testCaseDir, String className,
-            String methodName, InstrumentationTest instrTest) {
+    private InstrumentationApkTest setInstrumentationTest(String className,
+            String methodName, InstrumentationApkTest instrTest) {
         instrTest.setPackageName(mAppNameSpace);
         instrTest.setRunnerName(mRunner);
+        instrTest.setTestPackageName(mTestPackageName);
         instrTest.setClassName(className);
         instrTest.setMethodName(methodName);
         // mName means 'apk file name' for instrumentation tests
-        File apkFile = new File(testCaseDir, String.format("%s.apk", mName));
-        if (!apkFile.exists()) {
-            Log.w(LOG_TAG, String.format("Could not find apk file %s",
-                    apkFile.getAbsolutePath()));
-            return null;
+        instrTest.addInstallApk(String.format("%s.apk", mName), mAppNameSpace);
+        if (mTests.size() > 1000) {
+            // TODO: hack, large test suites can take longer to collect tests, increase timeout
+            instrTest.setCollectsTestsShellTimeout(10*60*1000);
         }
-        instrTest.setInstallFile(apkFile);
         return instrTest;
     }
 
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageXmlParser.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageXmlParser.java
index d12fb9d..fa2423f 100644
--- a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageXmlParser.java
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/TestPackageXmlParser.java
@@ -67,11 +67,13 @@
                 final String packageName = attributes.getValue("name");
                 final String runnerName = attributes.getValue("runner");
                 final String hostSideTest = attributes.getValue("hostSideOnly");
+                final String vmHostTest = attributes.getValue("vmHostTest");
                 final String jarPath = attributes.getValue("jarPath");
                 final String signatureCheck = attributes.getValue("signatureCheck");
                 final String referenceApp = attributes.getValue("referenceAppTest");
                 final String apkToTest = attributes.getValue("apkToTestName");
                 final String packageToTest = attributes.getValue("packageToTest");
+                final String javaPackageFilter = attributes.getValue("javaPackageFilter");
 
                 mPackageDef = new TestPackageDef();
                 mPackageDef.setUri(entryUriValue);
@@ -79,11 +81,13 @@
                 mPackageDef.setName(packageName);
                 mPackageDef.setRunner(runnerName);
                 mPackageDef.setIsHostSideTest(parseBoolean(hostSideTest));
+                mPackageDef.setIsVMHostTest(parseBoolean(vmHostTest));
                 mPackageDef.setJarPath(jarPath);
                 mPackageDef.setIsSignatureCheck(parseBoolean(signatureCheck));
                 mPackageDef.setIsReferenceApp(parseBoolean(referenceApp));
                 mPackageDef.setApkToTest(apkToTest);
                 mPackageDef.setPackageToTest(packageToTest);
+                mPackageDef.setTestPackageName(javaPackageFilter);
 
                 // reset the class name
                 mClassNameStack = new Stack<String>();
diff --git a/tools/tradefed-host/src/com/android/cts/tradefed/testtype/VMHostTest.java b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/VMHostTest.java
new file mode 100644
index 0000000..22c2738
--- /dev/null
+++ b/tools/tradefed-host/src/com/android/cts/tradefed/testtype/VMHostTest.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2011 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 com.android.cts.tradefed.testtype;
+
+import com.android.cts.tradefed.build.CtsBuildHelper;
+import com.android.ddmlib.Log;
+import com.android.tradefed.device.DeviceNotAvailableException;
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.result.ITestInvocationListener;
+import com.android.tradefed.util.FileUtil;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.zip.ZipFile;
+
+/**
+ * A wrapper around {@link JarHostTest} that includes additional device setup and clean up.
+ *
+ */
+public class VMHostTest extends JarHostTest {
+
+    private static final String LOG_TAG = "VMHostTest";
+    private static final String VM_TEST_TEMP_DIR = "/data/local/tmp/vm-tests";
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    @SuppressWarnings("unchecked")
+    public void run(ITestInvocationListener listener) throws DeviceNotAvailableException {
+        if (!installVmPrereqs(getDevice(), getBuildHelper())) {
+            throw new RuntimeException(String.format(
+                    "Failed to install vm-tests prereqs on device %s",
+                    getDevice().getSerialNumber()));
+        }
+        super.run(listener);
+    }
+
+    /**
+     * Install pre-requisite jars for running vm-tests, creates temp directories for test.
+     *
+     * @param device the {@link ITestDevice}
+     * @param ctsBuild the {@link CtsBuildHelper}
+     * @throws DeviceNotAvailableException
+     * @return true if test jar files are extracted and pushed to device successfully
+     */
+    private boolean installVmPrereqs(ITestDevice device, CtsBuildHelper ctsBuild)
+            throws DeviceNotAvailableException {
+        if (device.doesFileExist(VM_TEST_TEMP_DIR)) {
+            Log.d(LOG_TAG, String.format("Removing device's temp dir %s from previous runs.",
+                    VM_TEST_TEMP_DIR));
+            device.executeShellCommand(String.format("rm -r %s", VM_TEST_TEMP_DIR));
+        }
+        // Creates temp directory recursively. We also need to create the dalvik-cache directory
+        // which is used by the dalvikvm to optimize things. Without the dalvik-cache, there will be
+        // a sigsev thrown by the vm.
+        Log.d(LOG_TAG, "Creating device temp directory, including dalvik-cache.");
+        createRemoteDir(device, VM_TEST_TEMP_DIR + "/dalvik-cache" );
+        try {
+            File localTmpDir = FileUtil.createTempDir("cts-vm", new File("/tmp/"));
+            Log.d(LOG_TAG, String.format("Creating host temp dir %s", localTmpDir.getPath()));
+            File jarFile = new File(ctsBuild.getTestCasesDir(), getJarFileName());
+            if (!jarFile.exists()) {
+                Log.e(LOG_TAG, String.format("Missing jar file %s", jarFile.getPath()));
+                return false;
+            }
+            Log.d(LOG_TAG, String.format("Extracting jar file %s to host temp directory %s.",
+                    jarFile.getPath(), localTmpDir.getPath()));
+            ZipFile zipFile = new ZipFile(jarFile);
+            FileUtil.extractZip(zipFile, localTmpDir);
+            File localTestTmpDir = new File(localTmpDir, "tests/dot");
+            Log.d(LOG_TAG, String.format("Syncing host dir %s to device dir %s",
+                    localTestTmpDir.getPath(), VM_TEST_TEMP_DIR));
+            device.syncFiles(localTestTmpDir, VM_TEST_TEMP_DIR);
+            Log.d(LOG_TAG, String.format("Cleaning up host temp dir %s", localTmpDir.getPath()));
+            FileUtil.recursiveDelete(localTmpDir);
+        } catch (IOException e) {
+            Log.e(LOG_TAG, String.format("Failed to extract jar file %s and sync it to device %s.",
+                    getJarFileName(), device.getSerialNumber()));
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Creates the file directory recursively in the device.
+     *
+     * @param device the {@link ITestDevice}
+     * @param remoteFilePath the absolute path.
+     * @throws DeviceNotAvailableException
+     */
+    private void createRemoteDir(ITestDevice device, String remoteFilePath)
+            throws DeviceNotAvailableException {
+        if (device.doesFileExist(remoteFilePath)) {
+            return;
+        }
+        File f = new File(remoteFilePath);
+        String parentPath = f.getParent();
+        if (parentPath != null) {
+            createRemoteDir(device, parentPath);
+        }
+        device.executeShellCommand(String.format("mkdir %s", remoteFilePath));
+    }
+}
diff --git a/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/JarHostTestTest.java b/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/JarHostTestTest.java
index 9a49b77..dfe4413 100644
--- a/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/JarHostTestTest.java
+++ b/tools/tradefed-host/tests/src/com/android/cts/tradefed/testtype/JarHostTestTest.java
@@ -15,6 +15,7 @@
  */
 package com.android.cts.tradefed.testtype;
 
+import com.android.cts.tradefed.build.StubCtsBuildHelper;
 import com.android.ddmlib.testrunner.TestIdentifier;
 import com.android.tradefed.device.DeviceNotAvailableException;
 import com.android.tradefed.device.ITestDevice;
@@ -22,7 +23,6 @@
 
 import org.easymock.EasyMock;
 
-import java.io.File;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -37,6 +37,8 @@
 
     private static final String RUN_NAME = "run";
     private JarHostTest mJarTest;
+    private StubCtsBuildHelper mStubBuildHelper;
+
 
     @Override
     protected void setUp() throws Exception {
@@ -48,6 +50,8 @@
                 return MockTest.class;
             }
         };
+        mStubBuildHelper = new StubCtsBuildHelper();
+        mJarTest.setBuildHelper(mStubBuildHelper);
     }
 
     public static class MockTest extends TestCase {
@@ -80,7 +84,7 @@
         listener.testRunEnded(EasyMock.anyLong(), EasyMock.eq(Collections.EMPTY_MAP));
         mJarTest.setTests(tests);
         mJarTest.setDevice(EasyMock.createMock(ITestDevice.class));
-        mJarTest.setJarFile(new File("fakefile"));
+        mJarTest.setJarFileName("fakefile");
         mJarTest.setRunName(RUN_NAME);
 
         EasyMock.replay(listener);
diff --git a/tools/utils/CollectAllTests.java b/tools/utils/CollectAllTests.java
index c443db2..fe13e00 100644
--- a/tools/utils/CollectAllTests.java
+++ b/tools/utils/CollectAllTests.java
@@ -32,13 +32,17 @@
 import java.lang.annotation.Annotation;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
+import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Enumeration;
 import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.Map;
 import java.util.Set;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
 
 import javax.xml.parsers.DocumentBuilderFactory;
 import javax.xml.parsers.ParserConfigurationException;
@@ -51,170 +55,188 @@
 
 public class CollectAllTests extends DescriptionGenerator {
 
-    static final String ATTRIBUTE_RUNNER = "runner";
-    static final String ATTRIBUTE_PACKAGE = "appPackageName";
-    static final String ATTRIBUTE_NS = "appNameSpace";
-    static final String ATTRIBUTE_TARGET = "targetNameSpace";
-    static final String ATTRIBUTE_TARGET_BINARY = "targetBinaryName";
-    static final String ATTRIBUTE_HOST_SIDE_ONLY = "hostSideOnly";
-    static final String ATTRIBUTE_JAR_PATH = "jarPath";
+    private static final String ATTRIBUTE_RUNNER = "runner";
+    private static final String ATTRIBUTE_PACKAGE = "appPackageName";
+    private static final String ATTRIBUTE_NS = "appNameSpace";
+    private static final String ATTRIBUTE_TARGET = "targetNameSpace";
+    private static final String ATTRIBUTE_TARGET_BINARY = "targetBinaryName";
+    private static final String ATTRIBUTE_HOST_SIDE_ONLY = "hostSideOnly";
+    private static final String ATTRIBUTE_VM_HOST_TEST = "vmHostTest";
+    private static final String ATTRIBUTE_JAR_PATH = "jarPath";
+    private static final String ATTRIBUTE_JAVA_PACKAGE_FILTER = "javaPackageFilter";
 
-    static final String JAR_PATH = "LOCAL_JAR_PATH :=";
-    static final String TEST_TYPE = "LOCAL_TEST_TYPE :";
-
-    static final int HOST_SIDE_ONLY = 1;
-    static final int DEVICE_SIDE_ONLY = 2;
-
-    private static String runner;
-    private static String packageName;
-    private static String target;
-    private static String xmlName;
-    private static int testType;
-    private static String jarPath;
-
-    private static Map<String,TestClass> testCases;
-    private static Set<String> failed = new HashSet<String>();
-
-    private static class MyXMLGenerator extends XMLGenerator {
-
-        MyXMLGenerator(String outputPath) throws ParserConfigurationException {
-            super(outputPath);
-
-            Node testPackageElem = mDoc.getDocumentElement();
-
-            setAttribute(testPackageElem, ATTRIBUTE_NAME, xmlName);
-            setAttribute(testPackageElem, ATTRIBUTE_RUNNER, runner);
-            setAttribute(testPackageElem, ATTRIBUTE_PACKAGE, packageName);
-            setAttribute(testPackageElem, ATTRIBUTE_NS, packageName);
-
-            if (testType == HOST_SIDE_ONLY) {
-                setAttribute(testPackageElem, ATTRIBUTE_HOST_SIDE_ONLY, "true");
-                setAttribute(testPackageElem, ATTRIBUTE_JAR_PATH, jarPath);
-            }
-
-            if (!packageName.equals(target)) {
-                setAttribute(testPackageElem, ATTRIBUTE_TARGET, target);
-                setAttribute(testPackageElem, ATTRIBUTE_TARGET_BINARY, target);
-            }
-        }
-    }
-
-    private static String OUTPUTFILE = "";
-    private static String MANIFESTFILE = "";
-    private static String TESTSUITECLASS = "";
-    private static String ANDROID_MAKE_FILE = "";
-    private static String LIBCORE_EXPECTATION_DIR = null;
-
-    private static Test TESTSUITE;
-
-    static XMLGenerator xmlGenerator;
-    private static ExpectationStore libcoreVogarExpectationStore;
-    private static ExpectationStore ctsVogarExpectationStore;
+    private static final String JAR_PATH = "LOCAL_JAR_PATH :=";
+    private static final String TEST_TYPE = "LOCAL_TEST_TYPE :";
 
     public static void main(String[] args) {
-        if (args.length > 2) {
-            OUTPUTFILE = args[0];
-            MANIFESTFILE = args [1];
-            TESTSUITECLASS = args[2];
-            if (args.length > 3) {
-                LIBCORE_EXPECTATION_DIR = args[3];
+        if (args.length < 4 || args.length > 6) {
+            System.err.println("usage: CollectAllTests <output-file> <manifest-file> <jar-file> "
+                               + "<java-package> [expectation-dir [makefile-file]]");
+            if (args.length != 0) {
+                System.err.println("received:");
+                for (String arg : args) {
+                    System.err.println("  " + arg);
+                }
             }
-            if (args.length > 4) {
-                ANDROID_MAKE_FILE = args[4];
-            }
-        } else {
-            System.out.println("usage: \n" +
-                "\t... CollectAllTests <output-file> <manifest-file> <testsuite-class-name> <makefile-file> <expectation-dir>");
             System.exit(1);
         }
 
-        if (ANDROID_MAKE_FILE.length() > 0) {
-            testType = getTestType(ANDROID_MAKE_FILE);
+        final String outputPathPrefix = args[0];
+        File manifestFile = new File(args[1]);
+        String jarFileName = args[2];
+        final String javaPackageFilter = args[3];
+        // Validate the javaPackageFilter value if non null.
+        if (javaPackageFilter.length() != 0) {
+            if (!isValidJavaPackage(javaPackageFilter)) {
+                System.err.println("Invalid " + ATTRIBUTE_JAVA_PACKAGE_FILTER + ": " +
+                        javaPackageFilter);
+                System.exit(1);
+                return;
+            }
         }
+        String libcoreExpectationDir = (args.length > 4) ? args[4] : null;
+        String androidMakeFile = (args.length > 5) ? args[5] : null;
 
-        Document manifest = null;
+        final TestType testType = TestType.getTestType(androidMakeFile);
+
+        Document manifest;
         try {
-            manifest = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new FileInputStream(MANIFESTFILE));
+            manifest = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(
+                  new FileInputStream(manifestFile));
         } catch (Exception e) {
-            System.err.println("cannot open manifest");
+            System.err.println("cannot open manifest " + manifestFile);
             e.printStackTrace();
-            System.exit(1);;
+            System.exit(1);
+            return;
         }
 
         Element documentElement = manifest.getDocumentElement();
-
         documentElement.getAttribute("package");
+        final String runner = getElementAttribute(documentElement,
+                                                  "instrumentation",
+                                                  "android:name");
+        final String packageName = documentElement.getAttribute("package");
+        final String target = getElementAttribute(documentElement,
+                                                  "instrumentation",
+                                                  "android:targetPackage");
 
-        xmlName = new File(OUTPUTFILE).getName();
-        runner = getElementAttribute(documentElement, "instrumentation", "android:name");
-        packageName = documentElement.getAttribute("package");
-        target = getElementAttribute(documentElement, "instrumentation", "android:targetPackage");
-
-        Class<?> testClass = null;
+        String outputXmlFile = outputPathPrefix + ".xml";
+        final String xmlName = new File(outputPathPrefix).getName();
+        XMLGenerator xmlGenerator;
         try {
-            testClass = Class.forName(TESTSUITECLASS);
-        } catch (ClassNotFoundException e) {
-            System.err.println("test class not found");
-            e.printStackTrace();
-            System.exit(1);;
-        }
+            xmlGenerator = new XMLGenerator(outputXmlFile) {
+                {
+                    Node testPackageElem = mDoc.getDocumentElement();
 
-        Method method = null;
-        try {
-            method = testClass.getMethod("suite", new Class<?>[0]);
-        } catch (SecurityException e) {
-            System.err.println("failed to get suite method");
-            e.printStackTrace();
-            System.exit(1);;
-        } catch (NoSuchMethodException e) {
-            System.err.println("failed to get suite method");
-            e.printStackTrace();
-            System.exit(1);;
-        }
+                    setAttribute(testPackageElem, ATTRIBUTE_NAME, xmlName);
+                    setAttribute(testPackageElem, ATTRIBUTE_RUNNER, runner);
+                    setAttribute(testPackageElem, ATTRIBUTE_PACKAGE, packageName);
+                    setAttribute(testPackageElem, ATTRIBUTE_NS, packageName);
+                    setAttribute(testPackageElem, ATTRIBUTE_JAVA_PACKAGE_FILTER, javaPackageFilter);
 
-        try {
-            TESTSUITE = (Test) method.invoke(null, (Object[])null);
-        } catch (IllegalArgumentException e) {
-            System.err.println("failed to get suite method");
-            e.printStackTrace();
-            System.exit(1);;
-        } catch (IllegalAccessException e) {
-            System.err.println("failed to get suite method");
-            e.printStackTrace();
-            System.exit(1);;
-        } catch (InvocationTargetException e) {
-            System.err.println("failed to get suite method");
-            e.printStackTrace();
-            System.exit(1);;
-        }
+                    if (testType.type == TestType.HOST_SIDE_ONLY) {
+                        setAttribute(testPackageElem, ATTRIBUTE_HOST_SIDE_ONLY, "true");
+                        setAttribute(testPackageElem, ATTRIBUTE_JAR_PATH, testType.jarPath);
+                    }
 
-        try {
-            xmlGenerator = new MyXMLGenerator(OUTPUTFILE + ".xml");
+                    if (testType.type == TestType.VM_HOST_TEST) {
+                        setAttribute(testPackageElem, ATTRIBUTE_VM_HOST_TEST, "true");
+                        setAttribute(testPackageElem, ATTRIBUTE_JAR_PATH, testType.jarPath);
+                    }
+
+                    if (!packageName.equals(target)) {
+                        setAttribute(testPackageElem, ATTRIBUTE_TARGET, target);
+                        setAttribute(testPackageElem, ATTRIBUTE_TARGET_BINARY, target);
+                    }
+                }
+            };
         } catch (ParserConfigurationException e) {
-            System.err.println("Can't initialize XML Generator");
+            System.err.println("Can't initialize XML Generator " + outputXmlFile);
             System.exit(1);
+            return;
         }
 
+        ExpectationStore libcoreVogarExpectationStore;
+        ExpectationStore ctsVogarExpectationStore;
+
         try {
-            libcoreVogarExpectationStore = VogarUtils.provideExpectationStore(LIBCORE_EXPECTATION_DIR);
+            libcoreVogarExpectationStore
+                    = VogarUtils.provideExpectationStore(libcoreExpectationDir);
             ctsVogarExpectationStore = VogarUtils.provideExpectationStore(CTS_EXPECTATION_DIR);
         } catch (IOException e) {
-            System.err.println("Can't initialize vogar expectation store");
+            System.err.println("Can't initialize vogar expectation store from "
+                               + libcoreExpectationDir);
             e.printStackTrace(System.err);
             System.exit(1);
+            return;
+        }
+        ExpectationStore[] expectations = new ExpectationStore[] {
+            libcoreVogarExpectationStore, ctsVogarExpectationStore
+        };
+
+        JarFile jarFile = null;
+        try {
+            jarFile = new JarFile(jarFileName);
+        } catch (Exception e) {
+            System.err.println("cannot open jarfile " + jarFileName);
+            e.printStackTrace();
+            System.exit(1);
         }
 
-        testCases = new LinkedHashMap<String, TestClass>();
-        CollectAllTests cat = new CollectAllTests();
-        cat.compose();
+        Map<String,TestClass> testCases = new LinkedHashMap<String, TestClass>();
 
-        if (!failed.isEmpty()) {
-            System.err.println("The following classes have no default constructor");
-            for (Iterator<String> iterator = failed.iterator(); iterator.hasNext();) {
-                String type = iterator.next();
-                System.err.println(type);
+        String javaPackagePrefix = javaPackageFilter.isEmpty() ? "" : (javaPackageFilter + ".");
+
+        Enumeration<JarEntry> jarEntries = jarFile.entries();
+        while (jarEntries.hasMoreElements()) {
+            JarEntry jarEntry = jarEntries.nextElement();
+            String name = jarEntry.getName();
+            if (!name.endsWith(".class")) {
+                continue;
             }
-            System.exit(1);
+            String className
+                    = name.substring(0, name.length() - ".class".length()).replace('/', '.');
+            if (!className.startsWith(javaPackagePrefix)) {
+                continue;
+            }
+            try {
+                Class<?> klass = Class.forName(className,
+                                               false,
+                                               CollectAllTests.class.getClassLoader());
+                if (!TestCase.class.isAssignableFrom(klass)) {
+                    continue;
+                }
+                if (Modifier.isAbstract(klass.getModifiers())) {
+                    continue;
+                }
+                if (!Modifier.isPublic(klass.getModifiers())) {
+                    continue;
+                }
+                try {
+                    klass.getConstructor(new Class<?>[] { String.class } );
+                    addToTests(expectations, testCases, klass.asSubclass(TestCase.class));
+                    continue;
+                } catch (NoSuchMethodException e) {
+                } catch (SecurityException e) {
+                    System.out.println("Known bug (Working as intended): problem with class "
+                            + className);
+                    e.printStackTrace();
+                }
+                try {
+                    klass.getConstructor(new Class<?>[0]);
+                    addToTests(expectations, testCases, klass.asSubclass(TestCase.class));
+                    continue;
+                } catch (NoSuchMethodException e) {
+                } catch (SecurityException e) {
+                    System.out.println("Known bug (Working as intended): problem with class "
+                            + className);
+                    e.printStackTrace();
+                }
+            } catch (ClassNotFoundException e) {
+                System.out.println("class not found " + className);
+                e.printStackTrace();
+                System.exit(1);
+            }
         }
 
         for (Iterator<TestClass> iterator = testCases.values().iterator(); iterator.hasNext();) {
@@ -225,31 +247,51 @@
         try {
             xmlGenerator.dump();
         } catch (Exception e) {
-            System.err.println("cannot dump xml");
+            System.err.println("cannot dump xml to " + outputXmlFile);
             e.printStackTrace();
             System.exit(1);
         }
     }
 
-    private static int getTestType(String makeFileName) {
+    private static class TestType {
+        private static final int HOST_SIDE_ONLY = 1;
+        private static final int DEVICE_SIDE_ONLY = 2;
+        private static final int VM_HOST_TEST = 3;
 
-        int type = DEVICE_SIDE_ONLY;
-        try {
-            BufferedReader reader = new BufferedReader(new FileReader(makeFileName));
-            String line;
+        private final int type;
+        private final String jarPath;
 
-            while ((line =reader.readLine())!=null) {
-                if (line.startsWith(TEST_TYPE)) {
-                    type = HOST_SIDE_ONLY;
-                } else if (line.startsWith(JAR_PATH)) {
-                    jarPath = line.substring(JAR_PATH.length(), line.length()).trim();
-                }
-            }
-            reader.close();
-        } catch (IOException e) {
+        private TestType (int type, String jarPath) {
+            this.type = type;
+            this.jarPath = jarPath;
         }
 
-        return type;
+        private static TestType getTestType(String makeFileName) {
+            if (makeFileName == null || makeFileName.isEmpty()) {
+                return new TestType(DEVICE_SIDE_ONLY, null);
+            }
+            int type = TestType.DEVICE_SIDE_ONLY;
+            String jarPath = null;
+            try {
+                BufferedReader reader = new BufferedReader(new FileReader(makeFileName));
+                String line;
+
+                while ((line =reader.readLine())!=null) {
+                    if (line.startsWith(TEST_TYPE)) {
+                        if (line.indexOf(ATTRIBUTE_VM_HOST_TEST) >= 0) {
+                            type = VM_HOST_TEST;
+                        } else {
+                            type = HOST_SIDE_ONLY;
+                        }
+                    } else if (line.startsWith(JAR_PATH)) {
+                        jarPath = line.substring(JAR_PATH.length(), line.length()).trim();
+                    }
+                }
+                reader.close();
+            } catch (IOException e) {
+            }
+            return new TestType(type, jarPath);
+        }
     }
 
     private static Element getElement(Element element, String tagName) {
@@ -261,7 +303,9 @@
         }
     }
 
-    private static String getElementAttribute(Element element, String elementName, String attributeName) {
+    private static String getElementAttribute(Element element,
+                                              String elementName,
+                                              String attributeName) {
         Element e = getElement(element, elementName);
         if (e != null) {
             return e.getAttribute(attributeName);
@@ -270,65 +314,32 @@
         }
     }
 
-    public void compose() {
-        TestRunner runner = new TestRunner() {
-            @Override
-            protected TestResult createTestResult() {
-                return new TestResult() {
-                    @Override
-                    protected void run(TestCase test) {
-                        addToTests(test);
-                    }
-                };
-            }
-
-            @Override
-            public TestResult doRun(Test test) {
-                return super.doRun(test);
-            }
-
-
-
-        };
-
-        runner.setPrinter(new ResultPrinter(System.out) {
-            @Override
-            protected void printFooter(TestResult result) {
-            }
-
-            @Override
-            protected void printHeader(long runTime) {
-            }
-        });
-        runner.doRun(TESTSUITE);
-    }
-
-    private String getKnownFailure(final Class<? extends TestCase> testClass,
+    private static String getKnownFailure(final Class<? extends TestCase> testClass,
             final String testName) {
         return getAnnotation(testClass, testName, KNOWN_FAILURE);
     }
 
-    private boolean isKnownFailure(final Class<? extends TestCase> testClass,
+    private static boolean isKnownFailure(final Class<? extends TestCase> testClass,
             final String testName) {
         return getAnnotation(testClass, testName, KNOWN_FAILURE) != null;
     }
 
-    private boolean isBrokenTest(final Class<? extends TestCase> testClass,
+    private static boolean isBrokenTest(final Class<? extends TestCase> testClass,
             final String testName)  {
         return getAnnotation(testClass, testName, BROKEN_TEST) != null;
     }
 
-    private boolean isSuppressed(final Class<? extends TestCase> testClass,
+    private static boolean isSuppressed(final Class<? extends TestCase> testClass,
             final String testName)  {
         return getAnnotation(testClass, testName, SUPPRESSED_TEST) != null;
     }
 
-    private boolean hasSideEffects(final Class<? extends TestCase> testClass,
+    private static boolean hasSideEffects(final Class<? extends TestCase> testClass,
             final String testName) {
         return getAnnotation(testClass, testName, SIDE_EFFECT) != null;
     }
 
-    private String getAnnotation(final Class<? extends TestCase> testClass,
+    private static String getAnnotation(final Class<? extends TestCase> testClass,
             final String testName, final String annotationName) {
         try {
             Method testMethod = testClass.getMethod(testName, (Class[])null);
@@ -354,46 +365,71 @@
 
             }
 
-        } catch (java.lang.NoSuchMethodException e) {
+        } catch (NoSuchMethodException e) {
         }
 
         return null;
     }
 
-    private void addToTests(TestCase test) {
-
-        String testClassName = test.getClass().getName();
-        String testName = test.getName();
-        String knownFailure = getKnownFailure(test.getClass(), testName);
-
-        if (isKnownFailure(test.getClass(), testName)) {
-            System.out.println("ignoring known failure: " + test);
-            return;
-        } else if (isBrokenTest(test.getClass(), testName)) {
-            System.out.println("ignoring broken test: " + test);
-            return;
-        } else if (isSuppressed(test.getClass(), testName)) {
-            System.out.println("ignoring suppressed test: " + test);
-            return;
-        } else if (hasSideEffects(test.getClass(), testName)) {
-            System.out.println("ignoring test with side effects: " + test);
-            return;
-        } else if (VogarUtils.isVogarKnownFailure(libcoreVogarExpectationStore, test.getClass().getName(), testName)) {
-            System.out.println("ignoring libcore expectation known failure: " + test);
-            return;
-        } else if (VogarUtils.isVogarKnownFailure(ctsVogarExpectationStore, test.getClass().getName(), testName)) {
-            System.out.println("ignoring cts expectation known failure: " + test);
-            return;
-        }
-
-        if (!testName.startsWith("test")) {
-            try {
-                test.runBare();
-            } catch (Throwable e) {
-                e.printStackTrace();
-                return;
+    private static void addToTests(ExpectationStore[] expectations,
+                                   Map<String,TestClass> testCases,
+                                   Class<? extends TestCase> test) {
+        Class testClass = test;
+        Set<String> testNames = new HashSet<String>();
+        while (TestCase.class.isAssignableFrom(testClass)) {
+            Method[] testMethods = testClass.getDeclaredMethods();
+            for (Method testMethod : testMethods) {
+                String testName = testMethod.getName();
+                if (testNames.contains(testName)) {
+                    continue;
+                }
+                if (!testName.startsWith("test")) {
+                    continue;
+                }
+                if (testMethod.getParameterTypes().length != 0) {
+                    continue;
+                }
+                if (!testMethod.getReturnType().equals(Void.TYPE)) {
+                    continue;
+                }
+                if (!Modifier.isPublic(testMethod.getModifiers())) {
+                    continue;
+                }
+                testNames.add(testName);
+                addToTests(expectations, testCases, test, testName);
             }
+            testClass = testClass.getSuperclass();
         }
+    }
+
+    private static void addToTests(ExpectationStore[] expectations,
+                                   Map<String,TestClass> testCases,
+                                   Class<? extends TestCase> test,
+                                   String testName) {
+
+        String testClassName = test.getName();
+        String knownFailure = getKnownFailure(test, testName);
+
+        if (isKnownFailure(test, testName)) {
+            System.out.println("ignoring known failure: " + test + "#" + testName);
+            return;
+        } else if (isBrokenTest(test, testName)) {
+            System.out.println("ignoring broken test: " + test + "#" + testName);
+            return;
+        } else if (isSuppressed(test, testName)) {
+            System.out.println("ignoring suppressed test: " + test + "#" + testName);
+            return;
+        } else if (hasSideEffects(test, testName)) {
+            System.out.println("ignoring test with side effects: " + test + "#" + testName);
+            return;
+        } else if (VogarUtils.isVogarKnownFailure(expectations,
+                                                  testClassName,
+                                                  testName)) {
+            System.out.println("ignoring expectation known failure: " + test
+                               + "#" + testName);
+            return;
+        }
+
         TestClass testClass = null;
         if (testCases.containsKey(testClassName)) {
             testClass = testCases.get(testClassName);
@@ -403,13 +439,38 @@
         }
 
         testClass.mCases.add(new TestMethod(testName, "", "", knownFailure, false, false));
+    }
 
-        try {
-            test.getClass().getConstructor(new Class<?>[0]);
-        } catch (SecurityException e) {
-            failed.add(test.getClass().getName());
-        } catch (NoSuchMethodException e) {
-            failed.add(test.getClass().getName());
+    /**
+     * Determines if a given string is a valid java package name
+     * @param javaPackageName
+     * @return true if it is valid, false otherwise
+     */
+    private static boolean isValidJavaPackage(String javaPackageName) {
+        String[] strSections = javaPackageName.split(".");
+        for (String strSection : strSections) {
+          if (!isValidJavaIdentifier(strSection)) {
+              return false;
+          }
         }
+        return true;
+    }
+
+    /**
+     * Determines if a given string is a valid java identifier.
+     * @param javaIdentifier
+     * @return true if it is a valid identifier, false otherwise
+     */
+    private static boolean isValidJavaIdentifier(String javaIdentifier) {
+        if (javaIdentifier.length() == 0 ||
+                !Character.isJavaIdentifierStart(javaIdentifier.charAt(0))) {
+            return false;
+        }
+        for (int i = 1; i < javaIdentifier.length(); i++) {
+            if (!Character.isJavaIdentifierPart(javaIdentifier.charAt(i))) {
+                return false;
+            }
+        }
+        return true;
     }
 }
diff --git a/tools/utils/VogarUtils.java b/tools/utils/VogarUtils.java
index 06b48c6..c7070a5 100644
--- a/tools/utils/VogarUtils.java
+++ b/tools/utils/VogarUtils.java
@@ -27,6 +27,17 @@
 
 public class VogarUtils {
 
+    public static boolean isVogarKnownFailure(ExpectationStore[] expectationStores,
+            final String testClassName,
+            final String testMethodName) {
+        for (ExpectationStore expectationStore : expectationStores) {
+            if (isVogarKnownFailure(expectationStore, testClassName, testMethodName)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     public static boolean isVogarKnownFailure(ExpectationStore expectationStore,
             final String testClassName,
             final String testMethodName) {
diff --git a/tools/utils/buildCts.py b/tools/utils/buildCts.py
index 4daf48e..cff27e5 100755
--- a/tools/utils/buildCts.py
+++ b/tools/utils/buildCts.py
@@ -106,8 +106,15 @@
       packages.append(doc.GetAttr('TestPackage', 'appPackageName'))
 
     plan = tools.TestPlan(packages)
+    plan.Exclude(r'android\.core\.vm-tests-tf')
     plan.Exclude('android\.performance.*')
     self.__WritePlan(plan, 'CTS')
+
+    plan.Exclude('android\.core\.vm-tests')
+    plan.Exclude('android\.performance.*')
+    plan.Include(r'android\.core\.vm-tests-tf')
+    self.__WritePlan(plan, 'CTS-TF')
+
     plan.Exclude(r'android\.tests\.sigtest')
     plan.Exclude(r'android\.core.*')
     self.__WritePlan(plan, 'Android')
@@ -118,9 +125,14 @@
 
     plan = tools.TestPlan(packages)
     plan.Include(r'android\.core\.vm-tests')
+    plan.Exclude(r'android\.core\.vm-tests-tf')
     self.__WritePlan(plan, 'VM')
 
     plan = tools.TestPlan(packages)
+    plan.Include(r'android\.core\.vm-tests-tf')
+    self.__WritePlan(plan, 'VM-TF')
+
+    plan = tools.TestPlan(packages)
     plan.Include(r'android\.tests\.sigtest')
     self.__WritePlan(plan, 'Signature')
 
diff --git a/tools/vm-tests-tf/Android.mk b/tools/vm-tests-tf/Android.mk
new file mode 100644
index 0000000..bfc47d7
--- /dev/null
+++ b/tools/vm-tests-tf/Android.mk
@@ -0,0 +1,111 @@
+# Copyright (C) 2011 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.
+
+LOCAL_PATH := $(call my-dir)
+
+define all-src-files
+$(patsubst ./%,%,$(shell cd $(LOCAL_PATH) && find src -name '*.java'))
+endef
+
+# buildutil java library
+# ============================================================
+include $(CLEAR_VARS)
+
+LOCAL_TEST_TYPE := vmHostTest
+LOCAL_JAR_PATH := android.core.vm-tests-tf.jar
+
+LOCAL_SRC_FILES := $(call all-src-files)
+
+LOCAL_MODULE := cts-tf-dalvik-buildutil
+LOCAL_MODULE_CLASS := JAVA_LIBRARIES
+LOCAL_MODULE_TAGS := optional
+
+LOCAL_JAVA_LIBRARIES := dx dasm cfassembler
+LOCAL_CLASSPATH := $(HOST_JDK_TOOLS_JAR)
+
+include $(BUILD_HOST_JAVA_LIBRARY)
+
+$(LOCAL_BUILT_MODULE): PRIVATE_CLASS_INTERMEDIATES_DIR := $(intermediates)/classes
+
+TF_BUILD_UTIL_INTERMEDIATES_CLASSES := $(intermediates)/classes
+
+include $(CLEAR_VARS)
+
+LOCAL_IS_HOST_MODULE := true
+LOCAL_MODULE_CLASS := EXECUTABLES
+LOCAL_MODULE := vm-tests-tf
+LOCAL_MODULE_TAGS := optional
+
+include $(BUILD_SYSTEM)/base_rules.mk
+
+GENERATED_FILES:=$(intermediates)/tests
+
+$(LOCAL_BUILT_MODULE): $(GENERATED_FILES)
+
+colon:= :
+empty:=
+space:= $(empty) $(empty)
+
+
+$(GENERATED_FILES): PRIVATE_SRC_FOLDER := $(LOCAL_PATH)/src
+$(GENERATED_FILES): PRIVATE_LIB_FOLDER := $(LOCAL_PATH)/lib
+$(GENERATED_FILES): PRIVATE_INTERMEDIATES := $(intermediates)/tests
+$(GENERATED_FILES): PRIVATE_INTERMEDIATES_MAIN_FILES := $(intermediates)/main_files
+$(GENERATED_FILES): PRIVATE_INTERMEDIATES_HOSTJUNIT_FILES := $(intermediates)/hostjunit_files
+$(GENERATED_FILES): $(HOST_OUT_JAVA_LIBRARIES)/cts-tf-dalvik-buildutil.jar $(HOST_OUT_JAVA_LIBRARIES)/dasm.jar $(HOST_OUT_JAVA_LIBRARIES)/dx.jar $(HOST_OUT_JAVA_LIBRARIES)/cfassembler.jar
+
+	$(hide) mkdir -p $@
+	$(hide) mkdir -p $(PRIVATE_INTERMEDIATES_HOSTJUNIT_FILES)/dot/junit
+# generated and compile the host side junit tests
+	$(hide) java -cp $(subst $(space),$(colon),$^):$(HOST_JDK_TOOLS_JAR) util.build.BuildDalvikSuite $(PRIVATE_SRC_FOLDER) $(PRIVATE_INTERMEDIATES) $<:$(PRIVATE_LIB_FOLDER)/junit.jar:$(HOST_OUT_JAVA_LIBRARIES)/tradefed-prebuilt.jar $(PRIVATE_INTERMEDIATES_MAIN_FILES) $(TF_BUILD_UTIL_INTERMEDIATES_CLASSES) $(PRIVATE_INTERMEDIATES_HOSTJUNIT_FILES) $$RUN_VM_TESTS_RTO
+	@echo "wrote generated Main_*.java files to $(PRIVATE_INTERMEDIATES_MAIN_FILES)"
+INSTALLED_TESTS := $(dir $(LOCAL_INSTALLED_MODULE))../cts_dalviktests_tf/timestamp
+
+$(LOCAL_BUILT_MODULE):  $(INSTALLED_TESTS)
+
+$(INSTALLED_TESTS): PRIVATE_INTERMEDIATES := $(intermediates)/tests
+$(INSTALLED_TESTS): $(GENERATED_FILES) $(GENERATED_FILES)/dot/junit/dexcore.jar
+	$(hide) mkdir -p $(dir $@)tests
+	$(hide) $(ACP) -r $(PRIVATE_INTERMEDIATES)/dot $(dir $@)tests
+	@touch $@
+
+$(intermediates)/android.core.vm-tests-tf.jar: PRIVATE_INTERMEDIATES := $(intermediates)
+$(intermediates)/android.core.vm-tests-tf.jar: $(INSTALLED_TESTS)
+	$(hide) cd $(PRIVATE_INTERMEDIATES)/hostjunit_files/classes && \
+	zip -q -r ../../android.core.vm-tests-tf.jar . && \
+	cd -
+	$(hide) cd $(PRIVATE_INTERMEDIATES) && \
+	zip -q -r android.core.vm-tests-tf.jar tests && \
+	cd -
+	
+
+define get-class-path
+	$(TF_BUILD_UTIL_INTERMEDIATES_CLASSES)/$(strip $(1))
+endef
+
+define dex-classes
+	@mkdir -p $(dir $@)
+	@jar -cf $(dir $@)/$(notdir $@).jar $(addprefix -C $(1) ,$(2))
+	$(hide) $(DX) -JXms16M -JXmx768M \
+    --dex --output=$@ \
+    $(if $(NO_OPTIMIZE_DX), \
+        --no-optimize) \
+    $(dir $@)/$(notdir $@).jar
+    @rm -f $(dir $@)/$(notdir $@).jar
+endef
+
+$(call get-class-path,dot/junit/DxUtil.class) $(call get-class-path,dot/junit/DxAbstractMain.class):  $(HOST_OUT_JAVA_LIBRARIES)/cts-tf-dalvik-buildutil.jar $(DX)
+
+$(GENERATED_FILES)/dot/junit/dexcore.jar: $(call get-class-path,dot/junit/DxUtil.class) $(call get-class-path,dot/junit/DxAbstractMain.class)
+	$(call dex-classes,$(TF_BUILD_UTIL_INTERMEDIATES_CLASSES),dot/junit/DxUtil.class dot/junit/DxAbstractMain.class)
diff --git a/tools/vm-tests-tf/lib/junit.jar b/tools/vm-tests-tf/lib/junit.jar
new file mode 100644
index 0000000..674d71e
--- /dev/null
+++ b/tools/vm-tests-tf/lib/junit.jar
Binary files differ
diff --git a/tools/vm-tests-tf/src/dot/Main.java b/tools/vm-tests-tf/src/dot/Main.java
new file mode 100644
index 0000000..b7d2dc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/Main.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 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 dot;
+
+import dot.junit.AllTests;
+import junit.textui.TestRunner;
+
+/**
+ * Main class to run the jasmin tests.
+ */
+public class Main {
+    public static void main(String[] args) {
+        if (args.length == 0) {
+            System.out.println("Running all tests...");
+            TestRunner.run(AllTests.suite());
+        } else {
+            System.out.println("Running selected tests...");
+            TestRunner.main(args);
+        }
+
+        Runtime.getRuntime().halt(0);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/AllTests.java b/tools/vm-tests-tf/src/dot/junit/AllTests.java
new file mode 100644
index 0000000..fd54824
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/AllTests.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 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 dot.junit;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite();
+        // tests all opcodes
+        suite.addTest(dot.junit.opcodes.AllTests.suite());
+        suite.addTest(dot.junit.verify.AllTests.suite());
+        suite.addTest(dot.junit.format.AllTests.suite());
+        return suite;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/DxAbstractMain.java b/tools/vm-tests-tf/src/dot/junit/DxAbstractMain.java
new file mode 100644
index 0000000..d40fb94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/DxAbstractMain.java
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2008 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 dot.junit;
+
+public class DxAbstractMain {
+    
+    static public void assertEquals(int expected, int actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals. Expected " + expected + " actual " + actual);
+    }
+    
+    static public void assertEquals(String message, int expected, int actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals: " + message + " Expected " + expected + " actual " + actual);
+    }
+    
+
+    static public void assertEquals(long expected, long actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals. Expected " + expected + " actual " + actual);
+    }
+
+    static public void assertEquals(double expected, double actual, double delta) {
+        if(!(Math.abs(expected-actual) <= delta)) throw new RuntimeException("AssertionFailedError: not within delta");
+    }
+    
+    static public void assertEquals(Object expected, Object actual) {
+        if (expected == null && actual == null)
+            return;
+        if (expected != null && expected.equals(actual))
+            return;
+        throw new RuntimeException("AssertionFailedError: not the same");
+    }
+    
+    static public void assertTrue(boolean condition) {
+        if (!condition) throw new RuntimeException("AssertionFailedError: condition was false");
+    }
+    
+    static public void assertFalse(boolean condition) {
+        if (condition) throw new RuntimeException("AssertionFailedError: condition was true");
+    }
+    
+    static public void assertNotNull(Object object) {
+        if (object == null) throw new RuntimeException("AssertionFailedError: object was null");
+    }
+    
+    static public void assertNull(Object object) {
+        if (object != null) throw new RuntimeException("AssertionFailedError: object was not null");
+    }
+    
+    static public void fail(String message) {
+        throw new RuntimeException("AssertionFailedError msg:"+message);
+    }
+    
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/DxTestCase.java b/tools/vm-tests-tf/src/dot/junit/DxTestCase.java
new file mode 100644
index 0000000..00eb6fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/DxTestCase.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2008 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 dot.junit;
+
+import junit.framework.TestCase;
+
+public class DxTestCase extends TestCase {
+    
+    // omit the "extends TestCase" and uncomment the following methods if you would like to run the tests as rolled-out, separate tests.
+    
+/*    
+    static public void assertEquals(int expected, int actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(long expected, long actual) {
+        if (expected != actual) throw new RuntimeException("AssertionFailedError: not equals");
+    }
+
+    static public void assertEquals(double expected, double actual, double delta) {
+        if(!(Math.abs(expected-actual) <= delta)) throw new RuntimeException("AssertionFailedError: not within delta");
+    }
+    
+    static public void assertEquals(Object expected, Object actual) {
+        if (expected == null && actual == null)
+            return;
+        if (expected != null && expected.equals(actual))
+            return;
+        throw new RuntimeException("AssertionFailedError: not the same");
+    }
+    
+    static public void assertTrue(boolean condition) {
+        if (!condition) throw new RuntimeException("AssertionFailedError: condition was false");
+    }
+    
+    static public void assertFalse(boolean condition) {
+        if (condition) throw new RuntimeException("AssertionFailedError: condition was true");
+    }
+    
+    static public void assertNotNull(Object object) {
+        if (object == null) throw new RuntimeException("AssertionFailedError: object was null");
+    }
+    
+    static public void assertNull(Object object) {
+        if (object != null) throw new RuntimeException("AssertionFailedError: object was not null");
+    }
+    
+    static public void fail(String message) {
+        throw new RuntimeException("AssertionFailedError msg:"+message);
+    }
+*/    
+    
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/DxUtil.java b/tools/vm-tests-tf/src/dot/junit/DxUtil.java
new file mode 100644
index 0000000..cba0d54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/DxUtil.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2008 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 dot.junit; 
+
+public class DxUtil {
+    private static boolean isDalvik = false;
+    
+    static {
+        /**
+         * whether in case of a failure, also ClassNotFoundException is accepted.
+         * this makes sense for invalid classes that got rejected by the dx tools
+         * and thus do not exist in .dex format, so that this class missing means a
+         * the expected verify error (though at the dx tool level)
+         */
+//        String acnfS = System.getProperty("acceptCNF");
+//        isDalvik = (acnfS != null && acnfS.equals("true"));
+        //System.out.println("@DX:DxUtil:isDalik="+isDalvik);
+    }
+    
+    public static void checkVerifyException(Throwable t) {
+        // the dalvik vm and other vm handle verify errors differently (see the dalvik verifier)
+        // the dalvik vm only throws a VerifyError, whereas other vm can throw all subclasses of
+        // LinkageError:
+        // - ClassCircularityError
+        // - ClassFormatError
+        // - ExceptionInInitializerError
+        // - IncompatibleClassChangeError
+        // - NoClassDefFoundError
+        // - UnsatisfiedLinkError
+        // - VerifyError
+
+        // in case we are testing the dalvik, we also accept a ClassNotFoundException, 
+        // since that may happen when a verify error was thrown by the dx tool and thus no
+        // classes.dex was written at all. 
+        //System.out.println("@dx:debug:isDalvik:"+isDalvik);
+        /*
+        if ((t instanceof VerifyError || 
+                (isDalvik && t instanceof ClassNotFoundException) || 
+                (!isDalvik && !(t instanceof NoClassDefFoundError) 
+                        && t instanceof LinkageError))) {
+                // ok, this is what we expected
+            System.out.println("@dx:debug:vfe-ok: vfe was:"+t.getClass().getName()+", msg:"+t.getMessage());
+            return;
+        } else {
+            throw new RuntimeException("test did not cause the expected verify error, but:"+t.getClass().getName()+", msg:"+t.getMessage());
+        }
+*/
+        if (t instanceof VerifyError || t instanceof java.lang.IncompatibleClassChangeError ||t instanceof ClassNotFoundException) {
+                // ok, this is what we expected
+        } else {
+            throw new RuntimeException("VerifyError expected", t);
+        }
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/format/AllTests.java b/tools/vm-tests-tf/src/dot/junit/format/AllTests.java
new file mode 100644
index 0000000..30cc091
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/AllTests.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.format;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for dalvik vm: test that "
+                + "structurally damaged files are rejected by the verifier");
+        suite.addTestSuite(dot.junit.format.f1.Test_f1.class);
+
+        return suite;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/Test_f1.java b/tools/vm-tests-tf/src/dot/junit/format/f1/Test_f1.java
new file mode 100644
index 0000000..7751833
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/Test_f1.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.format.f1;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_f1 extends DxTestCase {
+
+    /**
+     * @constraint n/a
+     * @title size of dex file shall be greater than size of header 
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a 
+     * @title check that .dex with wrong magic is rejected 
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong version is rejected 
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong endian_tag is rejected 
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong header size is rejected 
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  file length must be equal to length in header
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  header->map_off != 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title number of classes in dex shall be > 0
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong checksum is rejected 
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_9");
+            fail("expected a verification exception but this test may fail if this check is not enforced");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title check that .dex with wrong signature is rejected 
+     */
+//    public void testVFE10() {
+//        try {
+//            Class.forName("dot.junit.format.f1.d.T_f1_10");
+//            fail("expected a verification exception but this test may fail if this check is not enforced");
+//        } catch (Throwable t) {
+//            DxUtil.checkVerifyException(t);
+//        }
+//    }
+    
+    /**
+     * @constraint n/a
+     * @title header and map section mismatch 
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title overlapping sections 
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.format.f1.d.T_f1_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_0.java b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_0.java
new file mode 100644
index 0000000..dda0585
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_0.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.format.f1.d;
+
+/**
+*
+*/
+public class T_f1_0 {
+   // dummy
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.d
new file mode 100644
index 0000000..e674f34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_f1_1.java
+.class public dot.junit.format.f1.d.T_f1_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.dfh
new file mode 100644
index 0000000..9f57983
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_1.dfh
@@ -0,0 +1,50 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_1.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_1.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ec6e3629
+    29 36 6E EC 
+// parsed: offset 12, len 20: signature           : 3861...369f
+    38 61 EF D2 97 82 DF F7 A7 77 7B 79 71 13 35 C5 6D 3E 36 9F 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.d
new file mode 100644
index 0000000..c06a20e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_f1_10.java
+.class public dot.junit.format.f1.d.T_f1_10
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.dfh
new file mode 100644
index 0000000..302ade9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_10.dfh
@@ -0,0 +1,250 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_10.dex'...
+//@leaveSignature
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 847035e6
+    E6 35 70 84 
+// parsed: offset 12, len 20: signature           : 3812...2763
+//@mod    38 12 0A DA E3 92 55 8C 6E 8F 55 E2 13 CF 5C C2 93 C5 27 63 
+    38 12 0A DA E3 92 55 8C 6E 8F 55 E2 13 CF 5C C2 93 C5 27 64 
+// parsed: offset 32, len 4: file_size           : 504
+    F8 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 380 (0x00017c)
+    7C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 288
+    20 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_10;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ljava/lang/Object;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 341 (0x000155) "T_f1_10.java"
+    55 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 355 (0x000163) "V"
+    63 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 358 (0x000166) "run"
+    66 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_10;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 363 (0x00016b)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 6B 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_10.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_10.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 33: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_10;"
+    1F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 31 30 3B 00 
+// parsed: offset 321, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 341, len 14: TYPE_STRING_DATA_ITEM [3] "T_f1_10.java"
+    0C 54 5F 66 31 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 355, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 358, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_10;"
+    // parsed: offset 363, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 364, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 365, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 366, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 367, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 368, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 371, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 373, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 374, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 375, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 377, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 380, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 384, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 396, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 408, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 420, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 432, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 444, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 456, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 468, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 480, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 363 (0x00016b)
+        00 20 00 00 01 00 00 00 6B 01 00 00 
+    // parsed: offset 492, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 380 (0x00017c)
+        00 10 00 00 01 00 00 00 7C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.d
new file mode 100644
index 0000000..4ad888f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_f1_11.java
+.class public dot.junit.format.f1.d.T_f1_11
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.dfh
new file mode 100644
index 0000000..520eecd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_11.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 759b34c5
+    C5 34 9B 75 
+// parsed: offset 12, len 20: signature           : 4b4b...0a08
+    4B 4B CE BA CF CF BB 48 3B 6A 80 1B 8A C6 11 04 21 E0 0A 08 
+// parsed: offset 32, len 4: file_size           : 504
+    F8 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 380 (0x00017c)
+    7C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+//@mod    B8 00 00 00 
+    BA 00 00 00 
+// parsed: offset 104, len 4: data_size           : 288
+    20 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_11;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ljava/lang/Object;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 341 (0x000155) "T_f1_11.java"
+    55 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 355 (0x000163) "V"
+    63 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 358 (0x000166) "run"
+    66 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_11;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 363 (0x00016b)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 6B 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_11.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_11.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 33: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_11;"
+    1F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 31 31 3B 00 
+// parsed: offset 321, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 341, len 14: TYPE_STRING_DATA_ITEM [3] "T_f1_11.java"
+    0C 54 5F 66 31 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 355, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 358, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_11;"
+    // parsed: offset 363, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 364, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 365, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 366, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 367, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 368, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 371, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 373, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 374, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 375, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 377, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 380, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 384, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 396, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 408, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 420, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 432, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 444, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 456, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 468, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 480, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 363 (0x00016b)
+        00 20 00 00 01 00 00 00 6B 01 00 00 
+    // parsed: offset 492, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 380 (0x00017c)
+        00 10 00 00 01 00 00 00 7C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.d
new file mode 100644
index 0000000..e6e053d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_f1_12.java
+.class public dot.junit.format.f1.d.T_f1_12
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.dfh
new file mode 100644
index 0000000..4676340
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_12.dfh
@@ -0,0 +1,250 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_12.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 07303496
+    96 34 30 07 
+// parsed: offset 12, len 20: signature           : 100a...7239
+    10 0A 39 C5 D2 93 06 FC 06 5B 53 BC 09 9C 40 BB 95 77 72 39 
+// parsed: offset 32, len 4: file_size           : 504
+    F8 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 380 (0x00017c)
+    7C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+//@mod    B8 00 00 00 
+    A8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 288
+    20 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_12;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ljava/lang/Object;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 341 (0x000155) "T_f1_12.java"
+    55 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 355 (0x000163) "V"
+    63 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 358 (0x000166) "run"
+    66 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_12;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 363 (0x00016b)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 6B 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_12.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_12.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 33: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_12;"
+    1F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 31 32 3B 00 
+// parsed: offset 321, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 341, len 14: TYPE_STRING_DATA_ITEM [3] "T_f1_12.java"
+    0C 54 5F 66 31 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 355, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 358, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_12;"
+    // parsed: offset 363, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 364, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 365, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 366, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 367, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 368, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 371, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 373, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 374, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 375, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 377, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 380, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 384, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 396, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 408, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 420, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 432, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 444, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+//@mod        06 00 00 00 01 00 00 00 B8 00 00 00 
+        06 00 00 00 01 00 00 00 A8 00 00 00 
+    // parsed: offset 456, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 468, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 480, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 363 (0x00016b)
+        00 20 00 00 01 00 00 00 6B 01 00 00 
+    // parsed: offset 492, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 380 (0x00017c)
+        00 10 00 00 01 00 00 00 7C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.d
new file mode 100644
index 0000000..72ed9ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_f1_2.java
+.class public dot.junit.format.f1.d.T_f1_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.dfh
new file mode 100644
index 0000000..8bb38ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_2.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_2.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+//@mod    64 65 78 0A 30 33 35 00 
+    64 66 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 8bce34e8
+    E8 34 CE 8B 
+// parsed: offset 12, len 20: signature           : f886...8932
+    F8 86 A3 17 14 FD 2D 49 29 6D D9 46 AA 4F 13 EF AE 3E 89 32 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_2;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_2.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_2;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_2.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_2.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_2;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 32 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_2.java"
+    0B 54 5F 66 31 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_2;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.d
new file mode 100644
index 0000000..f98d9fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_f1_3.java
+.class public dot.junit.format.f1.d.T_f1_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.dfh
new file mode 100644
index 0000000..cdfa4a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_3.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_3.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+//@mod    64 65 78 0A 30 33 35 00 
+    64 65 78 0A 30 33 36 00 
+// parsed: offset 8, len 4: checksum            : df0f35a3
+    A3 35 0F DF 
+// parsed: offset 12, len 20: signature           : b564...1b93
+    B5 64 17 3D FC 6E 3C 3F 82 57 DF 8D 9C A7 73 4C A9 DF 1B 93 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_3;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_3.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_3;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_3.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_3.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_3;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 33 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_3.java"
+    0B 54 5F 66 31 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_3;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.d
new file mode 100644
index 0000000..22611e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_f1_4.java
+.class public dot.junit.format.f1.d.T_f1_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.dfh
new file mode 100644
index 0000000..ea0b607
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_4.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_4.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 64f33679
+    79 36 F3 64 
+// parsed: offset 12, len 20: signature           : 8406...c8ea
+    84 06 E5 69 3D 66 48 AB 94 79 27 C2 C1 ED 00 D7 F5 13 C8 EA 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+//@mod    78 56 34 12 
+    78 56 12 34 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_4;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_4.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_4;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_4.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_4.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_4;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 34 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_4.java"
+    0B 54 5F 66 31 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_4;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.d
new file mode 100644
index 0000000..e3a993f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_f1_5.java
+.class public dot.junit.format.f1.d.T_f1_5
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.dfh
new file mode 100644
index 0000000..99ffd13
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_5.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_5.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_5.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 76133706
+    06 37 13 76 
+// parsed: offset 12, len 20: signature           : 8bbd...7aa2
+    8B BD 3B 72 62 F4 A2 15 DF 5E D8 E5 D2 AE 88 0D 4F B2 7A A2 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+//@mod    70 00 00 00 
+    69 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_5;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_5.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_5;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_5;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_5.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_5.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_5.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_5;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 35 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_5.java"
+    0B 54 5F 66 31 5F 35 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_5;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.d
new file mode 100644
index 0000000..6bb0bf0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_f1_6.java
+.class public dot.junit.format.f1.d.T_f1_6
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.dfh
new file mode 100644
index 0000000..375a9acf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_6.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_6.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_6.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 9bbb37a1
+    A1 37 BB 9B 
+// parsed: offset 12, len 20: signature           : a799...4c32
+    A7 99 F8 99 E8 8A 81 65 99 13 A3 2A E4 F9 F2 75 BD A6 4C 32 
+// parsed: offset 32, len 4: file_size           : 500
+//@mod    F4 01 00 00 
+    F4 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_6;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_6.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_6;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_6;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_6.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_6.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_6.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_6;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 36 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_6.java"
+    0B 54 5F 66 31 5F 36 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_6;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.d
new file mode 100644
index 0000000..61f31b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_f1_7.java
+.class public dot.junit.format.f1.d.T_f1_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.dfh
new file mode 100644
index 0000000..1845c7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_7.dfh
@@ -0,0 +1,249 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_7.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_7.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6b8435f0
+    F0 35 84 6B 
+// parsed: offset 12, len 20: signature           : a4f8...a536
+    A4 F8 18 65 4B 3E B6 D4 7A 69 71 CE B6 43 71 42 D3 6C A5 36 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+//@mod    78 01 00 00 
+    00 00 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_7;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_7.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_7;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_7;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_7.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_7.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_7.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_7;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 37 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_7.java"
+    0B 54 5F 66 31 5F 37 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_7;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.d
new file mode 100644
index 0000000..c622eb0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_f1_8.java
+.class public dot.junit.format.f1.d.T_f1_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.dfh
new file mode 100644
index 0000000..3ebff78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_8.dfh
@@ -0,0 +1,251 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : bd8b37bf
+    BF 37 8B BD 
+// parsed: offset 12, len 20: signature           : 1091...62b1
+    10 91 A3 C7 70 2E 36 E5 FD 30 D9 9A 80 EE 8A CC EC BA 62 B1 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+//@mod    01 00 00 00 
+    00 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_8;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_8.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_8;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+//@mod    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+    00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_8.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_8.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_8;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 38 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_8.java"
+    0B 54 5F 66 31 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_8;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+//@mod        06 00 00 00 01 00 00 00 B8 00 00 00 
+        06 00 00 00 00 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.d b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.d
new file mode 100644
index 0000000..9a44f4e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_f1_9.java
+.class public dot.junit.format.f1.d.T_f1_9
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       nop
+       nop
+       nop
+       nop
+       const v2, 456
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.dfh b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.dfh
new file mode 100644
index 0000000..f3e4dd13
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/format/f1/d/T_f1_9.dfh
@@ -0,0 +1,250 @@
+// Processing 'out/classes_dasm/dot/junit/format/f1/d/T_f1_9.dex'...
+//@leaveChecksum
+// Opened 'out/classes_dasm/dot/junit/format/f1/d/T_f1_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a9763611
+//@mod    11 36 76 A9 
+    11 36 76 AA 
+// parsed: offset 12, len 20: signature           : 1ee9...1036
+    1E E9 E9 EC 3D 14 5F 07 A1 FA 8E E8 B1 FA 6C 91 35 6A 10 36 
+// parsed: offset 32, len 4: file_size           : 500
+    F4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 376 (0x000178)
+    78 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 284
+    1C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 280 (0x000118) "<init>"
+    18 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 288 (0x000120) "Ldot/junit/format/f1/d/T_f1_9;"
+    20 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 320 (0x000140) "Ljava/lang/Object;"
+    40 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 340 (0x000154) "T_f1_9.java"
+    54 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 353 (0x000161) "V"
+    61 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 356 (0x000164) "run"
+    64 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/format/f1/d/T_f1_9;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/format/f1/d/T_f1_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_f1_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 361 (0x000169)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 69 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_9.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.format.f1.d.T_f1_9.run"
+    // parsed: offset 240, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: const v0, #float 0.000000 // #0x0000007b int
+            14 00 7B 00 00 00 
+        // parsed: offset 262, len 2: |0003: nop // spacer
+            00 00 
+        // parsed: offset 264, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 266, len 2: |0005: nop // spacer
+            00 00 
+        // parsed: offset 268, len 2: |0006: nop // spacer
+            00 00 
+        // parsed: offset 270, len 6: |0007: const v2, #float 0.000000 // #0x000001c8 int
+            14 02 C8 01 00 00 
+        // parsed: offset 276, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 278, len 2: PADDING
+    00 00 
+// parsed: offset 280, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 288, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/format/f1/d/T_f1_9;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 66 6F 72 6D 61 74 2F 66 31 2F 64 2F 54 5F 66 31 5F 39 3B 00 
+// parsed: offset 320, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 340, len 13: TYPE_STRING_DATA_ITEM [3] "T_f1_9.java"
+    0B 54 5F 66 31 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 353, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 356, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/format/f1/d/T_f1_9;"
+    // parsed: offset 361, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 362, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 363, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 364, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 365, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 366, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 369, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 371, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 372, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 373, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 375, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 376, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 380, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 392, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 404, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 416, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 428, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 440, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 452, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 464, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 280 (0x000118)
+        02 20 00 00 06 00 00 00 18 01 00 00 
+    // parsed: offset 476, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 361 (0x000169)
+        00 20 00 00 01 00 00 00 69 01 00 00 
+    // parsed: offset 488, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 376 (0x000178)
+        00 10 00 00 01 00 00 00 78 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/AllTests.java b/tools/vm-tests-tf/src/dot/junit/opcodes/AllTests.java
new file mode 100644
index 0000000..282ac42
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/AllTests.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for all dalvik vm opcodes");
+        suite.addTestSuite(dot.junit.opcodes.add_double_2addr.Test_add_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.add_double.Test_add_double.class);
+        suite.addTestSuite(dot.junit.opcodes.add_float_2addr.Test_add_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.add_float.Test_add_float.class);
+        suite.addTestSuite(dot.junit.opcodes.add_int_2addr.Test_add_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.add_int_lit16.Test_add_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.add_int_lit8.Test_add_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.add_int.Test_add_int.class);
+        suite.addTestSuite(dot.junit.opcodes.add_long_2addr.Test_add_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.add_long.Test_add_long.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_boolean.Test_aget_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_byte.Test_aget_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_char.Test_aget_char.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_object.Test_aget_object.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_short.Test_aget_short.class);
+        suite.addTestSuite(dot.junit.opcodes.aget.Test_aget.class);
+        suite.addTestSuite(dot.junit.opcodes.aget_wide.Test_aget_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.and_int_2addr.Test_and_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.and_int_lit16.Test_and_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.and_int_lit8.Test_and_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.and_int.Test_and_int.class);
+        suite.addTestSuite(dot.junit.opcodes.and_long_2addr.Test_and_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.and_long.Test_and_long.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_boolean.Test_aput_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_byte.Test_aput_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_char.Test_aput_char.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_object.Test_aput_object.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_short.Test_aput_short.class);
+        suite.addTestSuite(dot.junit.opcodes.aput.Test_aput.class);
+        suite.addTestSuite(dot.junit.opcodes.aput_wide.Test_aput_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.array_length.Test_array_length.class);
+        suite.addTestSuite(dot.junit.opcodes.check_cast.Test_check_cast.class);
+        suite.addTestSuite(dot.junit.opcodes.cmpg_double.Test_cmpg_double.class);
+        suite.addTestSuite(dot.junit.opcodes.cmpg_float.Test_cmpg_float.class);
+        suite.addTestSuite(dot.junit.opcodes.cmpl_double.Test_cmpl_double.class);
+        suite.addTestSuite(dot.junit.opcodes.cmpl_float.Test_cmpl_float.class);
+        suite.addTestSuite(dot.junit.opcodes.cmp_long.Test_cmp_long.class);
+        suite.addTestSuite(dot.junit.opcodes.const_16.Test_const_16.class);
+        suite.addTestSuite(dot.junit.opcodes.const_4.Test_const_4.class);
+        suite.addTestSuite(dot.junit.opcodes.const_class.Test_const_class.class);
+        suite.addTestSuite(dot.junit.opcodes.const_high16.Test_const_high16.class);
+        suite.addTestSuite(dot.junit.opcodes.const_string_jumbo.Test_const_string_jumbo.class);
+        suite.addTestSuite(dot.junit.opcodes.const_string.Test_const_string.class);
+        suite.addTestSuite(dot.junit.opcodes.const_wide_16.Test_const_wide_16.class);
+        suite.addTestSuite(dot.junit.opcodes.const_wide_32.Test_const_wide_32.class);
+        suite.addTestSuite(dot.junit.opcodes.const_wide_high16.Test_const_wide_high16.class);
+        suite.addTestSuite(dot.junit.opcodes.const_wide.Test_const_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.div_double_2addr.Test_div_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.div_double.Test_div_double.class);
+        suite.addTestSuite(dot.junit.opcodes.div_float_2addr.Test_div_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.div_float.Test_div_float.class);
+        suite.addTestSuite(dot.junit.opcodes.div_int_2addr.Test_div_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.div_int_lit16.Test_div_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.div_int_lit8.Test_div_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.div_int.Test_div_int.class);
+        suite.addTestSuite(dot.junit.opcodes.div_long_2addr.Test_div_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.div_long.Test_div_long.class);
+        suite.addTestSuite(dot.junit.opcodes.double_to_float.Test_double_to_float.class);
+        suite.addTestSuite(dot.junit.opcodes.double_to_int.Test_double_to_int.class);
+        suite.addTestSuite(dot.junit.opcodes.double_to_long.Test_double_to_long.class);
+        suite.addTestSuite(dot.junit.opcodes.fill_array_data.Test_fill_array_data.class);
+        suite.addTestSuite(dot.junit.opcodes.filled_new_array_range.Test_filled_new_array_range.class);
+        suite.addTestSuite(dot.junit.opcodes.filled_new_array.Test_filled_new_array.class);
+        suite.addTestSuite(dot.junit.opcodes.float_to_double.Test_float_to_double.class);
+        suite.addTestSuite(dot.junit.opcodes.float_to_int.Test_float_to_int.class);
+        suite.addTestSuite(dot.junit.opcodes.float_to_long.Test_float_to_long.class);
+        suite.addTestSuite(dot.junit.opcodes.goto_16.Test_goto_16.class);
+        suite.addTestSuite(dot.junit.opcodes.goto_32.Test_goto_32.class);
+        suite.addTestSuite(dot.junit.opcodes.if_eq.Test_if_eq.class);
+        suite.addTestSuite(dot.junit.opcodes.if_eqz.Test_if_eqz.class);
+        suite.addTestSuite(dot.junit.opcodes.if_ge.Test_if_ge.class);
+        suite.addTestSuite(dot.junit.opcodes.if_gez.Test_if_gez.class);
+        suite.addTestSuite(dot.junit.opcodes.if_gt.Test_if_gt.class);
+        suite.addTestSuite(dot.junit.opcodes.if_gtz.Test_if_gtz.class);
+        suite.addTestSuite(dot.junit.opcodes.if_le.Test_if_le.class);
+        suite.addTestSuite(dot.junit.opcodes.if_lez.Test_if_lez.class);
+        suite.addTestSuite(dot.junit.opcodes.if_lt.Test_if_lt.class);
+        suite.addTestSuite(dot.junit.opcodes.if_ltz.Test_if_ltz.class);
+        suite.addTestSuite(dot.junit.opcodes.if_ne.Test_if_ne.class);
+        suite.addTestSuite(dot.junit.opcodes.if_nez.Test_if_nez.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_boolean.Test_iget_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_byte.Test_iget_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_char.Test_iget_char.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_object.Test_iget_object.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_short.Test_iget_short.class);
+        suite.addTestSuite(dot.junit.opcodes.iget.Test_iget.class);
+        suite.addTestSuite(dot.junit.opcodes.iget_wide.Test_iget_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.instance_of.Test_instance_of.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_byte.Test_int_to_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_char.Test_int_to_char.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_double.Test_int_to_double.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_float.Test_int_to_float.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_long.Test_int_to_long.class);
+        suite.addTestSuite(dot.junit.opcodes.int_to_short.Test_int_to_short.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_direct_range.Test_invoke_direct_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_direct.Test_invoke_direct.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_interface_range.Test_invoke_interface_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_interface.Test_invoke_interface.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_static_range.Test_invoke_static_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_static.Test_invoke_static.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_super_range.Test_invoke_super_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_super.Test_invoke_super.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_virtual_range.Test_invoke_virtual_range.class);
+        suite.addTestSuite(dot.junit.opcodes.invoke_virtual.Test_invoke_virtual.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_boolean.Test_iput_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_byte.Test_iput_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_char.Test_iput_char.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_object.Test_iput_object.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_short.Test_iput_short.class);
+        suite.addTestSuite(dot.junit.opcodes.iput.Test_iput.class);
+        suite.addTestSuite(dot.junit.opcodes.iput_wide.Test_iput_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.long_to_double.Test_long_to_double.class);
+        suite.addTestSuite(dot.junit.opcodes.long_to_float.Test_long_to_float.class);
+        suite.addTestSuite(dot.junit.opcodes.long_to_int.Test_long_to_int.class);
+        suite.addTestSuite(dot.junit.opcodes.monitor_enter.Test_monitor_enter.class);
+        suite.addTestSuite(dot.junit.opcodes.monitor_exit.Test_monitor_exit.class);
+        suite.addTestSuite(dot.junit.opcodes.move_16.Test_move_16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_exception.Test_move_exception.class);
+        suite.addTestSuite(dot.junit.opcodes.move_from16.Test_move_from16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_object_16.Test_move_object_16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_object_from16.Test_move_object_from16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_object.Test_move_object.class);
+        suite.addTestSuite(dot.junit.opcodes.move_result_object.Test_move_result_object.class);
+        suite.addTestSuite(dot.junit.opcodes.move_result.Test_move_result.class);
+        suite.addTestSuite(dot.junit.opcodes.move_result_wide.Test_move_result_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.move.Test_move.class);
+        suite.addTestSuite(dot.junit.opcodes.move_wide_16.Test_move_wide_16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_wide_from16.Test_move_wide_from16.class);
+        suite.addTestSuite(dot.junit.opcodes.move_wide.Test_move_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_double_2addr.Test_mul_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_double.Test_mul_double.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_float_2addr.Test_mul_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_float.Test_mul_float.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_int_2addr.Test_mul_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_int_lit16.Test_mul_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_int_lit8.Test_mul_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_int.Test_mul_int.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_long_2addr.Test_mul_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.mul_long.Test_mul_long.class);
+        suite.addTestSuite(dot.junit.opcodes.neg_double.Test_neg_double.class);
+        suite.addTestSuite(dot.junit.opcodes.neg_float.Test_neg_float.class);
+        suite.addTestSuite(dot.junit.opcodes.neg_int.Test_neg_int.class);
+        suite.addTestSuite(dot.junit.opcodes.neg_long.Test_neg_long.class);
+        suite.addTestSuite(dot.junit.opcodes.new_array.Test_new_array.class);
+        suite.addTestSuite(dot.junit.opcodes.new_instance.Test_new_instance.class);
+        suite.addTestSuite(dot.junit.opcodes.nop.Test_nop.class);
+        suite.addTestSuite(dot.junit.opcodes.not_int.Test_not_int.class);
+        suite.addTestSuite(dot.junit.opcodes.not_long.Test_not_long.class);
+        suite.addTestSuite(dot.junit.opcodes.opc_const.Test_opc_const.class);
+        suite.addTestSuite(dot.junit.opcodes.opc_goto.Test_opc_goto.class);
+        suite.addTestSuite(dot.junit.opcodes.opc_return.Test_opc_return.class);
+        suite.addTestSuite(dot.junit.opcodes.opc_throw.Test_opc_throw.class);
+        suite.addTestSuite(dot.junit.opcodes.or_int_2addr.Test_or_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.or_int_lit16.Test_or_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.or_int_lit8.Test_or_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.or_int.Test_or_int.class);
+        suite.addTestSuite(dot.junit.opcodes.or_long_2addr.Test_or_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.or_long.Test_or_long.class);
+        suite.addTestSuite(dot.junit.opcodes.packed_switch.Test_packed_switch.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_double_2addr.Test_rem_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_double.Test_rem_double.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_float_2addr.Test_rem_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_float.Test_rem_float.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_int_2addr.Test_rem_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_int_lit16.Test_rem_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_int_lit8.Test_rem_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_int.Test_rem_int.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_long_2addr.Test_rem_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.rem_long.Test_rem_long.class);
+        suite.addTestSuite(dot.junit.opcodes.return_object.Test_return_object.class);
+        suite.addTestSuite(dot.junit.opcodes.return_void.Test_return_void.class);
+        suite.addTestSuite(dot.junit.opcodes.return_wide.Test_return_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.rsub_int_lit8.Test_rsub_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.rsub_int.Test_rsub_int.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_boolean.Test_sget_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_byte.Test_sget_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_char.Test_sget_char.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_object.Test_sget_object.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_short.Test_sget_short.class);
+        suite.addTestSuite(dot.junit.opcodes.sget.Test_sget.class);
+        suite.addTestSuite(dot.junit.opcodes.sget_wide.Test_sget_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_int_2addr.Test_shl_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_int_lit8.Test_shl_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_int.Test_shl_int.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_long_2addr.Test_shl_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.shl_long.Test_shl_long.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_int_2addr.Test_shr_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_int_lit8.Test_shr_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_int.Test_shr_int.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_long_2addr.Test_shr_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.shr_long.Test_shr_long.class);
+        suite.addTestSuite(dot.junit.opcodes.sparse_switch.Test_sparse_switch.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_boolean.Test_sput_boolean.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_byte.Test_sput_byte.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_char.Test_sput_char.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_object.Test_sput_object.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_short.Test_sput_short.class);
+        suite.addTestSuite(dot.junit.opcodes.sput.Test_sput.class);
+        suite.addTestSuite(dot.junit.opcodes.sput_wide.Test_sput_wide.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_double_2addr.Test_sub_double_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_double.Test_sub_double.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_float_2addr.Test_sub_float_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_float.Test_sub_float.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_int_2addr.Test_sub_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_int.Test_sub_int.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_long_2addr.Test_sub_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.sub_long.Test_sub_long.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_int_2addr.Test_ushr_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_int_lit8.Test_ushr_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_int.Test_ushr_int.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_long_2addr.Test_ushr_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.ushr_long.Test_ushr_long.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_int_2addr.Test_xor_int_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_int_lit16.Test_xor_int_lit16.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_int_lit8.Test_xor_int_lit8.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_int.Test_xor_int.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_long_2addr.Test_xor_long_2addr.class);
+        suite.addTestSuite(dot.junit.opcodes.xor_long.Test_xor_long.class);      
+        return suite;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/Test_add_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/Test_add_double.java
new file mode 100644
index 0000000..8887d50
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/Test_add_double.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_double.d.T_add_double_1;
+import dot.junit.opcodes.add_double.d.T_add_double_3;
+
+public class Test_add_double extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(5.84d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(-3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, -2.7d
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.add_double.d.T_add_double_2
+        //@uses dot.junit.opcodes.add_double.d.T_add_double_3 
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(-5.84d, t.run(-3.14d, -2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this sum of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_add_double_3 t = new T_add_double_3();
+        try {
+            t.run();
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB5() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(-0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, 2.7d
+     */
+    public void testB7() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(+0d, t.run(-2.7d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, -4.9E-324
+     */
+    public void testB9() {
+        T_add_double_1 t = new T_add_double_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, -4.9E-324));
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double.d.T_add_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double.d.T_add_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double.d.T_add_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double.d.T_add_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.d
new file mode 100644
index 0000000..f3d3653
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_add_double_1.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.java
new file mode 100644
index 0000000..530fbd2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_double.d;
+
+public class T_add_double_1 {
+
+    public double run(double a, double b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_2.d
new file mode 100644
index 0000000..da30626
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_double_2.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       const v3, 3.1415
+       add-double v0, v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.d
new file mode 100644
index 0000000..ebdc492
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_double_3.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 7
+
+       const-wide v2, 31415
+       const-wide v4, 3.1415
+       add-double v0, v2, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.java
new file mode 100644
index 0000000..fadc09e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_double.d;
+
+public class T_add_double_3 {
+
+    public double run() {
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_4.d
new file mode 100644
index 0000000..7acfdfd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_add_double_4.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double v0, v3, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_5.d
new file mode 100644
index 0000000..64b8613
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_add_double_5.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_6.d
new file mode 100644
index 0000000..424bd3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double/d/T_add_double_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_add_double_6.java
+.class public dot.junit.opcodes.add_double.d.T_add_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 7
+       move v0, v5
+       move v1, v5
+       move v2, v6    
+       move v3, v6    
+       add-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/Test_add_double_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/Test_add_double_2addr.java
new file mode 100644
index 0000000..f0a17a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/Test_add_double_2addr.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_1;
+import dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_3;
+
+public class Test_add_double_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(5.84d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(-3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, -2.7d
+     */
+    public void testN3() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(-5.84d, t.run(-3.14d, -2.7d));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this sum of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_add_double_2addr_3 t = new T_add_double_2addr_3();
+        try {
+            t.run();
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB5() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(-0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, 2.7d
+     */
+    public void testB7() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(+0d, t.run(-2.7d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, -4.9E-324
+     */
+    public void testB9() {
+        T_add_double_2addr_1 t = new T_add_double_2addr_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, -4.9E-324));
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.d
new file mode 100644
index 0000000..44d1f78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_add_double_2addr_1.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.java
new file mode 100644
index 0000000..33ac19a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_double_2addr.d;
+
+public class T_add_double_2addr_1 {
+
+    public double run(double a, double b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.d
new file mode 100644
index 0000000..3633e01
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_double_2addr_2.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       const v3, 3.1415
+       add-double/2addr v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.d
new file mode 100644
index 0000000..62f4198
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_double_2addr_3.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 7
+
+       const-wide v2, 31415
+       const-wide v4, 3.1415
+       add-double/2addr v4, v2
+       return-wide v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.java
new file mode 100644
index 0000000..860bfc9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_double_2addr.d;
+
+public class T_add_double_2addr_3 {
+
+    public double run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.d
new file mode 100644
index 0000000..a9f2625
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_add_double_2addr_4.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double/2addr v3, v2
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.d
new file mode 100644
index 0000000..521f02b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_add_double_2addr_5.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       add-double/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.d
new file mode 100644
index 0000000..cd95033
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_double_2addr/d/T_add_double_2addr_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_add_double_2addr_6.java
+.class public dot.junit.opcodes.add_double_2addr.d.T_add_double_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 7
+       move v0, v5
+          move v1, v5
+       move v2, v6
+          move v3, v6          
+       add-double/2addr v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/Test_add_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/Test_add_float.java
new file mode 100644
index 0000000..b821daa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/Test_add_float.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_float.d.T_add_float_1;
+import dot.junit.opcodes.add_float.d.T_add_float_5;
+
+public class Test_add_float extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(5.84f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(-3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, -2.7f
+     */
+    public void testN3() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(-5.84f, t.run(-3.14f, -2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_add_float_5 t = new T_add_float_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(3.3028235E38f, 0.11E38f));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_add_float_1 t = new T_add_float_1();
+        assertTrue(Float.isNaN(t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY)));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(-0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, 2.7f
+     */
+    public void testB7() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(+0f, t.run(-2.7f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB9() {
+        T_add_float_1 t = new T_add_float_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float.d.T_add_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float.d.T_add_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float.d.T_add_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float.d.T_add_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.d
new file mode 100644
index 0000000..502b435
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_float_1.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.java
new file mode 100644
index 0000000..efe39a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_float.d;
+
+public class T_add_float_1 {
+
+    public float run(float a, float b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_2.d
new file mode 100644
index 0000000..627036b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_float_2.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       const-wide v0, 3.1415    
+       add-float v0, v3, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_3.d
new file mode 100644
index 0000000..7de8486
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_float_3.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       const-wide v0, 3141523
+       add-float v0, v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_4.d
new file mode 100644
index 0000000..443ed0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_float_4.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float v0, v2, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.d
new file mode 100644
index 0000000..efcd143
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_add_float_5.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 4
+       add-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.java
new file mode 100644
index 0000000..403a198
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_float.d;
+
+public class T_add_float_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_6.d
new file mode 100644
index 0000000..061a4da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float/d/T_add_float_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_float_6.java
+.class public dot.junit.opcodes.add_float.d.T_add_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/Test_add_float_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/Test_add_float_2addr.java
new file mode 100644
index 0000000..5824a70
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/Test_add_float_2addr.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_1;
+import dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_5;
+
+public class Test_add_float_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(5.84f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(-3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, -2.7f
+     */
+    public void testN3() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(-5.84f, t.run(-3.14f, -2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_add_float_2addr_5 t = new T_add_float_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(3.3028235E38f, 0.11E38f));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertTrue(Float.isNaN(t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY)));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(-0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, 2.7f
+     */
+    public void testB7() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(+0f, t.run(-2.7f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB9() {
+        T_add_float_2addr_1 t = new T_add_float_2addr_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.d
new file mode 100644
index 0000000..38344b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_float_2addr_1.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.java
new file mode 100644
index 0000000..a872040
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_float_2addr.d;
+
+public class T_add_float_2addr_1 {
+
+    public float run(float a, float b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.d
new file mode 100644
index 0000000..dd35d2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_float_2addr_2.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       const-wide v0, 3.1415    
+       add-float/2addr v3, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.d
new file mode 100644
index 0000000..6c0eb9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_float_2addr_3.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       const-wide v0, 3141523
+       add-float/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.d
new file mode 100644
index 0000000..c9832e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_float_2addr_4.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float/2addr v2, v1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.d
new file mode 100644
index 0000000..281b673
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_add_float_2addr_5.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 4
+       add-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.java
new file mode 100644
index 0000000..afdfb51
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_float_2addr.d;
+
+public class T_add_float_2addr_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.d
new file mode 100644
index 0000000..2aa078c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_float_2addr/d/T_add_float_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_float_2addr_6.java
+.class public dot.junit.opcodes.add_float_2addr.d.T_add_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       add-float/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/Test_add_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/Test_add_int.java
new file mode 100644
index 0000000..f952b82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/Test_add_int.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_int.d.T_add_int_1;
+import dot.junit.opcodes.add_int.d.T_add_int_5;
+
+public class Test_add_int extends DxTestCase {
+    /**
+     * @title Arguments = 8, 4 
+     */
+    public void testN1() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(12, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-2147483647, t.run(0, -2147483647));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN5() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-2147483648, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = -1, 1
+     */
+    public void testN6() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(0, t.run(-1, 1));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_add_int_5 t = new T_add_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-2, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(-2147483647, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_int_1 t = new T_add_int_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int.d.T_add_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int.d.T_add_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int.d.T_add_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int.d.T_add_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.d
new file mode 100644
index 0000000..bd71e35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_1.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.java
new file mode 100644
index 0000000..6b9c617
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int.d;
+
+public class T_add_int_1 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_2.d
new file mode 100644
index 0000000..83cb90c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_2.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       add-int v0, v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_3.d
new file mode 100644
index 0000000..84db6e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_3.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 33231415
+       add-int v0, v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_4.d
new file mode 100644
index 0000000..0ce8bbc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_4.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.d
new file mode 100644
index 0000000..a92add0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_5.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+       add-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.java
new file mode 100644
index 0000000..fa7efca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int.d;
+
+public class T_add_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_6.d
new file mode 100644
index 0000000..3dac6df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int/d/T_add_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_6.java
+.class public dot.junit.opcodes.add_int.d.T_add_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/Test_add_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/Test_add_int_2addr.java
new file mode 100644
index 0000000..4804246
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/Test_add_int_2addr.java
@@ -0,0 +1,188 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_1;
+import dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_5;
+
+public class Test_add_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(12, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-2147483647, t.run(0, -2147483647));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN5() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-2147483648, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = -1, 1
+     */
+    public void testN6() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(0, t.run(-1, 1));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_add_int_2addr_5 t = new T_add_int_2addr_5();
+        try {
+            t.run(1, 2f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-2, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(-2147483647, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_int_2addr_1 t = new T_add_int_2addr_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.d
new file mode 100644
index 0000000..980379c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_2addr_1.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.java
new file mode 100644
index 0000000..d5dc9c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_2addr.d;
+
+public class T_add_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.d
new file mode 100644
index 0000000..bc0c3ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_2addr_2.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       add-int/2addr v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.d
new file mode 100644
index 0000000..c47322e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_2addr_3.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 33231415
+       add-int/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.d
new file mode 100644
index 0000000..7b4adf8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_2addr_4.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.d
new file mode 100644
index 0000000..042e671
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_2addr_5.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+       add-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.java
new file mode 100644
index 0000000..5161361
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_2addr.d;
+
+public class T_add_int_2addr_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.d
new file mode 100644
index 0000000..50a14a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_2addr/d/T_add_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_2addr_6.java
+.class public dot.junit.opcodes.add_int_2addr.d.T_add_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/Test_add_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/Test_add_int_lit16.java
new file mode 100644
index 0000000..1400145
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/Test_add_int_lit16.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_16;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_5;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_1;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_10;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_11;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_12;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_2;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_3;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_4;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_6;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_7;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_8;
+import dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_9;
+
+public class Test_add_int_lit16 extends DxTestCase {
+    /**
+     * @title Arguments = 8 + 4
+     */
+    public void testN1() {
+        T_add_int_lit16_1 t = new T_add_int_lit16_1();
+        assertEquals(12, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + 255
+     */
+    public void testN2() {
+        T_add_int_lit16_2 t = new T_add_int_lit16_2();
+        assertEquals(255, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + (-32768)
+     */
+    public void testN3() {
+        T_add_int_lit16_3 t = new T_add_int_lit16_3();
+        assertEquals(-32768, t.run());
+    }
+
+    /**
+     * @title Arguments = (-2147483647) + 0
+     */
+    public void testN4() {
+        T_add_int_lit16_4 t = new T_add_int_lit16_4();
+        assertEquals(-2147483647, t.run());
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe + 2
+     */
+    public void testN5() {
+        T_add_int_lit16_5 t = new T_add_int_lit16_5();
+        assertEquals(-2147483648, t.run());
+    }
+
+    /**
+     * @title Arguments = -1 + 1
+     */
+    public void testN6() {
+        T_add_int_lit16_6 t = new T_add_int_lit16_6();
+        assertEquals(0, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_add_int_lit16_16 t = new T_add_int_lit16_16();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 + Short.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_int_lit16_7 t = new T_add_int_lit16_7();
+        assertEquals(Short.MAX_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE + Short.MAX_VALUE
+     */
+    public void testB2() {
+        T_add_int_lit16_8 t = new T_add_int_lit16_8();
+        assertEquals(-2147450882, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE + 1
+     */
+    public void testB3() {
+        T_add_int_lit16_9 t = new T_add_int_lit16_9();
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE + 1
+     */
+    public void testB4() {
+        T_add_int_lit16_10 t = new T_add_int_lit16_10();
+        assertEquals(-2147483647, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + 0
+     */
+    public void testB5() {
+        T_add_int_lit16_11 t = new T_add_int_lit16_11();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE + Short.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_int_lit16_12 t = new T_add_int_lit16_12();
+        assertEquals(-65536, t.run());
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.d
new file mode 100644
index 0000000..b79b0f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_1.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 8
+       add-int/lit16 v0, v1, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.java
new file mode 100644
index 0000000..93da1b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_1 {
+
+    public int run() {
+        return 8 + 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.d
new file mode 100644
index 0000000..c8b348a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_10.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483648
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.java
new file mode 100644
index 0000000..2b30e1d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_10 {
+
+    public int run() {
+        return Integer.MIN_VALUE + 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.d
new file mode 100644
index 0000000..26fe8ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_11.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.java
new file mode 100644
index 0000000..e9e8461
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_11 {
+
+    public int run() {
+        return 0 + 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.d
new file mode 100644
index 0000000..34af2a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_12.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -32768
+       add-int/lit16 v0, v1, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.java
new file mode 100644
index 0000000..bbed57b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_12 {
+
+    public int run() {
+        return Short.MIN_VALUE + Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.d
new file mode 100644
index 0000000..95fd121
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_13.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       add-int/lit16 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.d
new file mode 100644
index 0000000..dfa3742
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_14.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 33231415
+       add-int/lit16 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.d
new file mode 100644
index 0000000..6cc4b57
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_15.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.d
new file mode 100644
index 0000000..ba09106
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_16.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+       add-int/lit16 v0, v3, 123
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.java
new file mode 100644
index 0000000..50fd369
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_16 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.d
new file mode 100644
index 0000000..bc66cbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_17.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/lit16 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.d
new file mode 100644
index 0000000..d80497f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_2.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, 255
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.java
new file mode 100644
index 0000000..3a6c2c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_2 {
+
+    public int run() {
+        return 0 + 255;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.d
new file mode 100644
index 0000000..3a9009d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_3.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.java
new file mode 100644
index 0000000..c523fd1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_3 {
+
+    public int run() {
+        return 0 + (-32768);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.d
new file mode 100644
index 0000000..141d546
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_4.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483647
+       add-int/lit16 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.java
new file mode 100644
index 0000000..980de4a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_4 {
+
+    public int run() {
+        return (-2147483647) + 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.d
new file mode 100644
index 0000000..54f42ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_5.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0x7ffffffe
+       add-int/lit16 v0, v1, 2
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.java
new file mode 100644
index 0000000..f22579d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_5 {
+
+    public int run() {
+        return 0x7ffffffe + 2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.d
new file mode 100644
index 0000000..b103f66
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_6.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.java
new file mode 100644
index 0000000..342df4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_6 {
+
+    public int run() {
+        return -1 + 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.d
new file mode 100644
index 0000000..b4d689f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_7.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit16 v0, v1, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.java
new file mode 100644
index 0000000..afd6e25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_7 {
+
+    public int run() {
+        return 0 + Short.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.d
new file mode 100644
index 0000000..e1aa77e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_8.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       add-int/lit16 v0, v1, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.java
new file mode 100644
index 0000000..c63d9e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_8 {
+
+    public int run() {
+        return Integer.MAX_VALUE + Short.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.d
new file mode 100644
index 0000000..74d8cc0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit16_9.java
+.class public dot.junit.opcodes.add_int_lit16.d.T_add_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       add-int/lit16 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.java
new file mode 100644
index 0000000..71613ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit16/d/T_add_int_lit16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit16.d;
+
+public class T_add_int_lit16_9 {
+
+    public int run() {
+        return Integer.MAX_VALUE + 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/Test_add_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/Test_add_int_lit8.java
new file mode 100644
index 0000000..f9b3eef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/Test_add_int_lit8.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_16;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_1;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_10;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_11;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_12;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_2;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_3;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_4;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_5;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_6;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_7;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_8;
+import dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_9;
+
+public class Test_add_int_lit8 extends DxTestCase {
+    /**
+     * @title Arguments = 8 + 4
+     */
+    public void testN1() {
+        T_add_int_lit8_1 t = new T_add_int_lit8_1();
+        assertEquals(12, t.run());
+    }
+
+    /**
+     * @title Arguments = Byte.MIN_VALUE + Byte.MAX_VALUE
+     */
+    public void testN2() {
+        T_add_int_lit8_2 t = new T_add_int_lit8_2();
+        assertEquals(-1, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + (-128)
+     */
+    public void testN3() {
+        T_add_int_lit8_3 t = new T_add_int_lit8_3();
+        assertEquals(-128, t.run());
+    }
+
+    /**
+     * @title Arguments = (-2147483647) + 0
+     */
+    public void testN4() {
+        T_add_int_lit8_4 t = new T_add_int_lit8_4();
+        assertEquals(-2147483647, t.run());
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe + 2
+     */
+    public void testN5() {
+        T_add_int_lit8_5 t = new T_add_int_lit8_5();
+        assertEquals(-2147483648, t.run());
+    }
+
+    /**
+     * @title Arguments = -1 + 1
+     */
+    public void testN6() {
+        T_add_int_lit8_6 t = new T_add_int_lit8_6();
+        assertEquals(0, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this sum of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_add_int_lit8_16 t = new T_add_int_lit8_16();
+        try {
+            t.run(3f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 + Byte.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_int_lit8_7 t = new T_add_int_lit8_7();
+        assertEquals(Byte.MAX_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE + Byte.MAX_VALUE
+     */
+    public void testB2() {
+        T_add_int_lit8_8 t = new T_add_int_lit8_8();
+        assertEquals(-2147483522, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE + 1
+     */
+    public void testB3() {
+        T_add_int_lit8_9 t = new T_add_int_lit8_9();
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE + 1
+     */
+    public void testB4() {
+        T_add_int_lit8_10 t = new T_add_int_lit8_10();
+        assertEquals(-2147483647, t.run());
+    }
+
+    /**
+     * @title Arguments = 0 + 0
+     */
+    public void testB5() {
+        T_add_int_lit8_11 t = new T_add_int_lit8_11();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE + Byte.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_int_lit8_12 t = new T_add_int_lit8_12();
+        assertEquals(-32896, t.run());
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.d
new file mode 100644
index 0000000..5286f6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_1.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 8
+       add-int/lit8 v0, v1, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.java
new file mode 100644
index 0000000..732ee8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_1 {
+
+    public int run() {
+        return 8 + 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.d
new file mode 100644
index 0000000..9ef34ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_10.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483648
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.java
new file mode 100644
index 0000000..68c301d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_10 {
+
+    public int run() {
+        return Integer.MIN_VALUE + 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.d
new file mode 100644
index 0000000..88c76b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_11.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit8 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.java
new file mode 100644
index 0000000..43b33cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_11 {
+
+    public int run() {
+        return 0 + 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.d
new file mode 100644
index 0000000..a8776f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_12.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -32768
+       add-int/lit8 v0, v1, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.java
new file mode 100644
index 0000000..cfb1577
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_12 {
+
+    public int run() {
+        return Short.MIN_VALUE + Byte.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.d
new file mode 100644
index 0000000..d5a468b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_13.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       add-int/lit8 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.d
new file mode 100644
index 0000000..873fff0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_14.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 33231415
+       add-int/lit8 v0, v0, 1
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.d
new file mode 100644
index 0000000..28b894e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_15.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.d
new file mode 100644
index 0000000..3d4d8c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_16.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+       add-int/lit8 v0, v3, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.java
new file mode 100644
index 0000000..c482a64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_16 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.d
new file mode 100644
index 0000000..6bdf030
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_17.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       add-int/lit8 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.d
new file mode 100644
index 0000000..ef0a0fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_2.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -128
+       add-int/lit8 v0, v1, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.java
new file mode 100644
index 0000000..acf2a79
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_2 {
+
+    public int run() {
+        return Byte.MIN_VALUE + Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.d
new file mode 100644
index 0000000..9a49def
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_3.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit8 v0, v1, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.java
new file mode 100644
index 0000000..8c10f8f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_3 {
+
+    public int run() {
+        return 0 + (-128);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.d
new file mode 100644
index 0000000..a3fd7dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_4.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483647
+       add-int/lit8 v0, v1, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.java
new file mode 100644
index 0000000..06a8fad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_4 {
+
+    public int run() {
+        return (-2147483647) + 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.d
new file mode 100644
index 0000000..ab9f0ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_5.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0x7ffffffe
+       add-int/lit8 v0, v1, 2
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.java
new file mode 100644
index 0000000..6691276
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_5 {
+
+    public int run() {
+        return 0x7ffffffe + 2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.d
new file mode 100644
index 0000000..4ea7fdb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_6.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.java
new file mode 100644
index 0000000..122a899
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_6 {
+
+    public int run() {
+        return -1 + 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.d
new file mode 100644
index 0000000..01fdc0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_7.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       add-int/lit8 v0, v1, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.java
new file mode 100644
index 0000000..7ec523e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_7 {
+
+    public int run() {
+        return 0 + Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.d
new file mode 100644
index 0000000..75d74b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_8.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       add-int/lit8 v0, v1, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.java
new file mode 100644
index 0000000..957ccee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_8 {
+
+    public int run() {
+        return Integer.MAX_VALUE + Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.d
new file mode 100644
index 0000000..a28afd0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_int_lit8_9.java
+.class public dot.junit.opcodes.add_int_lit8.d.T_add_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       add-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.java
new file mode 100644
index 0000000..bdc657c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_int_lit8/d/T_add_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_int_lit8.d;
+
+public class T_add_int_lit8_9 {
+
+    public int run() {
+        return Integer.MAX_VALUE + 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/Test_add_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/Test_add_long.java
new file mode 100644
index 0000000..301879a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/Test_add_long.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_long.d.T_add_long_1;
+import dot.junit.opcodes.add_long.d.T_add_long_6;
+
+public class Test_add_long extends DxTestCase {
+    /**
+     * @title Arguments = 12345678l, 87654321l
+     */
+    public void testN1() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(99999999l, t.run(12345678l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = 0l, 87654321l
+     */
+    public void testN2() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(87654321l, t.run(0l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = -12345678l, 0l
+     */
+    public void testN3() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-12345678l, t.run(-12345678l, 0l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this sum of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_add_long_6 t = new T_add_long_6();
+        try {
+            t.run();
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0 + Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0 + Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-9223372036854775808L, t.run(0l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0 + 0
+     */
+    public void testB3() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-2, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + Long.MIN_VALUE
+     */
+    public void testB5() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE + Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE + 1
+     */
+    public void testB7() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-9223372036854775807l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + 1
+     */
+    public void testB8() {
+        T_add_long_1 t = new T_add_long_1();
+        assertEquals(-9223372036854775808l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long.d.T_add_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / integer
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long.d.T_add_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long.d.T_add_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long.d.T_add_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.d
new file mode 100644
index 0000000..2dc5518
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_long_1.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.java
new file mode 100644
index 0000000..a6bd026
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_long.d;
+
+public class T_add_long_1 {
+
+    public long run(long a, long b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_2.d
new file mode 100644
index 0000000..83eaa73
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_long_2.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_3.d
new file mode 100644
index 0000000..3935188
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_long_3.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v5, 12345
+       add-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_4.d
new file mode 100644
index 0000000..9dab202
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_long_4.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v5, 12345.0
+       add-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_5.d
new file mode 100644
index 0000000..5c57aeb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_long_5.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long v0, v2, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.d
new file mode 100644
index 0000000..435256f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_long_6.java
+.class public dot.junit.opcodes.add_long.d.T_add_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 7
+
+       const-wide v2, 31415
+       const-wide v4, 3.1415
+       add-long v0, v2, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.java
new file mode 100644
index 0000000..4cdc6c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long/d/T_add_long_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_long.d;
+
+public class T_add_long_6 {
+
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/Test_add_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/Test_add_long_2addr.java
new file mode 100644
index 0000000..c3ef53c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/Test_add_long_2addr.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_1;
+import dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_6;
+
+public class Test_add_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 12345678l, 87654321l
+     */
+    public void testN1() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(99999999l, t.run(12345678l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = 0l, 87654321l
+     */
+    public void testN2() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(87654321l, t.run(0l, 87654321l));
+    }
+
+    /**
+     * @title Arguments = -12345678l, 0l
+     */
+    public void testN3() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-12345678l, t.run(-12345678l, 0l));
+    }
+
+   /**
+    * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+    * so this sum of long and double makes no sense but shall not crash the VM.  
+    */
+   public void testN4() {
+       T_add_long_2addr_6 t = new T_add_long_2addr_6();
+       try {
+           t.run();
+       } catch (Throwable e) {
+       }
+   }
+    
+    /**
+     * @title Arguments = 0 + Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0 + Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(0l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0 + 0
+     */
+    public void testB3() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-2, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + Long.MIN_VALUE
+     */
+    public void testB5() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE + Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE + 1
+     */
+    public void testB7() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-9223372036854775807l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE + 1
+     */
+    public void testB8() {
+        T_add_long_2addr_1 t = new T_add_long_2addr_1();
+        assertEquals(-9223372036854775808l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference / long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.d
new file mode 100644
index 0000000..ec11b7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_add_long_2addr_1.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long/2addr v3, v5
+       return-wide v3
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.java
new file mode 100644
index 0000000..e799c7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_long_2addr.d;
+
+public class T_add_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a+b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.d
new file mode 100644
index 0000000..8172613
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_long_2addr_2.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.d
new file mode 100644
index 0000000..e10a72a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_long_2addr_3.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v5, 12345
+       add-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.d
new file mode 100644
index 0000000..1073b6c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_long_2addr_4.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v5, 12345.0
+       add-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.d
new file mode 100644
index 0000000..3455016
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_add_long_2addr_5.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       add-long/2addr v2, v5
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.d
new file mode 100644
index 0000000..7c842cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_add_long_2addr_6.java
+.class public dot.junit.opcodes.add_long_2addr.d.T_add_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 7
+
+       const-wide v2, 31415
+       const-wide v4, 3.1415
+       add-long/2addr v2, v4
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.java
new file mode 100644
index 0000000..8badad9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/add_long_2addr/d/T_add_long_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.add_long_2addr.d;
+
+public class T_add_long_2addr_6 {
+
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/Test_aget.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/Test_aget.java
new file mode 100644
index 0000000..d33e943
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/Test_aget.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget.d.T_aget_1;
+import dot.junit.opcodes.aget.d.T_aget_8;
+
+public class Test_aget extends DxTestCase {
+    /**
+     * @title get int from array
+     */
+    public void testN1() {
+        T_aget_1 t = new T_aget_1();
+        int[] arr = new int[2];
+        arr[1] = 100000000;
+        assertEquals(100000000, t.run(arr, 1));
+    }
+
+    /**
+     * @title get int from array
+     */
+    public void testN2() {
+        T_aget_1 t = new T_aget_1();
+        int[] arr = new int[2];
+        arr[0] = 100000000;
+        assertEquals(100000000, t.run(arr, 0));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        int[] arr = new int[2];
+        T_aget_8 t = new T_aget_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_1 t = new T_aget_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_1 t = new T_aget_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_1 t = new T_aget_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget.d.T_aget_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.d
new file mode 100644
index 0000000..549fdb5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_1.java
+.class public dot.junit.opcodes.aget.d.T_aget_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.java
new file mode 100644
index 0000000..75a2874
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget.d;
+
+public class T_aget_1 {
+    public int run(int[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_2.d
new file mode 100644
index 0000000..2d31759
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_2.java
+.class public dot.junit.opcodes.aget.d.T_aget_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ID)I
+.limit regs 9
+
+       aget v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_3.d
new file mode 100644
index 0000000..72731ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_3.java
+.class public dot.junit.opcodes.aget.d.T_aget_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IJ)I
+.limit regs 9
+
+       aget v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_4.d
new file mode 100644
index 0000000..8e3b970
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_4.java
+.class public dot.junit.opcodes.aget.d.T_aget_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_5.d
new file mode 100644
index 0000000..e0d2005
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_5.java
+.class public dot.junit.opcodes.aget.d.T_aget_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_6.d
new file mode 100644
index 0000000..41a009c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_6.java
+.class public dot.junit.opcodes.aget.d.T_aget_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_7.d
new file mode 100644
index 0000000..8b2c021
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_7.java
+.class public dot.junit.opcodes.aget.d.T_aget_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)I
+.limit regs 9
+
+       aget v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.d
new file mode 100644
index 0000000..e91d276
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_8.java
+.class public dot.junit.opcodes.aget.d.T_aget_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IF)I
+.limit regs 9
+
+       aget v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.java
new file mode 100644
index 0000000..1174ced
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget.d;
+
+public class T_aget_8 {
+    public int run(int[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_9.d
new file mode 100644
index 0000000..51fe7a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget/d/T_aget_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_9.java
+.class public dot.junit.opcodes.aget.d.T_aget_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)I
+.limit regs 9
+
+       aget v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/Test_aget_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/Test_aget_boolean.java
new file mode 100644
index 0000000..3d8bd6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/Test_aget_boolean.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_boolean.d.T_aget_boolean_1;
+import dot.junit.opcodes.aget_boolean.d.T_aget_boolean_8;
+
+public class Test_aget_boolean extends DxTestCase {
+    /**
+     * @title get boolean from array 
+     */
+    public void testN1() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        boolean[] arr = new boolean[2];
+        arr[1] = true;
+        assertEquals(true, t.run(arr, 1));
+    }
+
+    /**
+     * @title get boolean from array
+     */
+    public void testN2() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        boolean[] arr = new boolean[2];
+        arr[0] = true;
+        assertEquals(true, t.run(arr, 0));
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        boolean[] arr = new boolean[2];
+        T_aget_boolean_8 t = new T_aget_boolean_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        boolean[] arr = new boolean[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_boolean_1 t = new T_aget_boolean_1();
+        boolean[] arr = new boolean[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_boolean.d.T_aget_boolean_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.d
new file mode 100644
index 0000000..6fbf9bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_boolean_1.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.java
new file mode 100644
index 0000000..5ab595d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_boolean.d;
+
+public class T_aget_boolean_1 {
+    public boolean run(boolean[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.d
new file mode 100644
index 0000000..e858a8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_boolean_2.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZD)Z
+.limit regs 9
+
+       aget-boolean v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.d
new file mode 100644
index 0000000..07133df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_boolean_3.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZJ)Z
+.limit regs 9
+
+       aget-boolean v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.d
new file mode 100644
index 0000000..28f6cb1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_boolean_4.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.d
new file mode 100644
index 0000000..e1c1ffe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_boolean_5.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.d
new file mode 100644
index 0000000..ef79c81
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_boolean_6.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.d
new file mode 100644
index 0000000..da3663c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_boolean_7.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.d
new file mode 100644
index 0000000..5c36f5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_boolean_8.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZF)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.java
new file mode 100644
index 0000000..ff40523
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_boolean.d;
+
+public class T_aget_boolean_8 {
+    public boolean run(boolean[] arr, float idx) {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.d
new file mode 100644
index 0000000..cbd51e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_boolean/d/T_aget_boolean_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_boolean_9.java
+.class public dot.junit.opcodes.aget_boolean.d.T_aget_boolean_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZI)Z
+.limit regs 9
+
+       aget-boolean v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/Test_aget_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/Test_aget_byte.java
new file mode 100644
index 0000000..fcaeab4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/Test_aget_byte.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_byte.d.T_aget_byte_1;
+import dot.junit.opcodes.aget_byte.d.T_aget_byte_8;
+
+
+public class Test_aget_byte extends DxTestCase {
+    /**
+     * @title get byte from array
+     */
+    public void testN1() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        byte[] arr = new byte[2];
+        arr[1] = 100;
+        assertEquals(100, t.run(arr, 1));
+    }
+
+    /**
+     * @title get byte from array
+     */
+    public void testN2() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        byte[] arr = new byte[2];
+        arr[0] = 100;
+        assertEquals(100, t.run(arr, 0));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+         byte[] arr = new byte[2];
+         T_aget_byte_8 t = new T_aget_byte_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_byte_1 t = new T_aget_byte_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, short
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_byte.d.T_aget_byte_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.d
new file mode 100644
index 0000000..2fa8a9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_byte_1.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.java
new file mode 100644
index 0000000..72646a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_byte.d;
+
+public class T_aget_byte_1 {
+    public byte run(byte[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.d
new file mode 100644
index 0000000..11eba1a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_byte_2.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       const-wide v1, 1.0
+       aget-byte v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.d
new file mode 100644
index 0000000..c2b426b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_byte_3.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       const-wide v1, 1
+       aget-byte v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.d
new file mode 100644
index 0000000..905f4b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_byte_4.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.d
new file mode 100644
index 0000000..b65b94e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_byte_5.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.d
new file mode 100644
index 0000000..6861fa4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_byte_6.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.d
new file mode 100644
index 0000000..03ab879
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_byte_7.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       aget-byte v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.d
new file mode 100644
index 0000000..92f0273
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_byte_8.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BF)B
+.limit regs 9
+
+       aget-byte v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.java
new file mode 100644
index 0000000..af7c391
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_byte.d;
+
+public class T_aget_byte_8 {
+    public byte run(byte[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.d
new file mode 100644
index 0000000..b2d4ffd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_byte/d/T_aget_byte_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_byte_9.java
+.class public dot.junit.opcodes.aget_byte.d.T_aget_byte_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BI)B
+.limit regs 9
+
+       aget-byte v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/Test_aget_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/Test_aget_char.java
new file mode 100644
index 0000000..8871a9e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/Test_aget_char.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_char.d.T_aget_char_1;
+import dot.junit.opcodes.aget_char.d.T_aget_char_8;
+
+public class Test_aget_char extends DxTestCase {
+    /**
+     * @title get char from array 
+     */
+    public void testN1() {
+        T_aget_char_1 t = new T_aget_char_1();
+        char[] arr = new char[2];
+        arr[1] = 'g';
+        assertEquals('g', t.run(arr, 1));
+    }
+
+    /**
+     * @title get char from array
+     */
+    public void testN2() {
+        T_aget_char_1 t = new T_aget_char_1();
+        char[] arr = new char[2];
+        arr[0] = 'g';
+        assertEquals('g', t.run(arr, 0));
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        char[] arr = new char[2];
+        T_aget_char_8 t = new T_aget_char_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_char_1 t = new T_aget_char_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_char_1 t = new T_aget_char_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_char_1 t = new T_aget_char_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, char
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], char
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_char.d.T_aget_char_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.d
new file mode 100644
index 0000000..0789458
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_char_1.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CI)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.java
new file mode 100644
index 0000000..b15a052
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_char.d;
+
+public class T_aget_char_1 {
+    public char run(char[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.d
new file mode 100644
index 0000000..ff1b8fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_char_2.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CD)C
+.limit regs 9
+
+       aget-char v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.d
new file mode 100644
index 0000000..b197a3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_char_3.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CJ)C
+.limit regs 9
+
+       aget-char v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.d
new file mode 100644
index 0000000..53904af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_char_4.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.d
new file mode 100644
index 0000000..ed9a20d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_char_5.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.d
new file mode 100644
index 0000000..04cee20
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_char_6.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.d
new file mode 100644
index 0000000..508f6fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_char_7.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CI)C
+.limit regs 9
+
+       aget-char v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.d
new file mode 100644
index 0000000..daaa044
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_char_8.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CF)C
+.limit regs 9
+
+       aget-char v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.java
new file mode 100644
index 0000000..8cf681a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_char.d;
+
+public class T_aget_char_8 {
+    public char run(char[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.d
new file mode 100644
index 0000000..4053996
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_char/d/T_aget_char_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_char_9.java
+.class public dot.junit.opcodes.aget_char.d.T_aget_char_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CI)C
+.limit regs 9
+
+       aget-char v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/Test_aget_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/Test_aget_object.java
new file mode 100644
index 0000000..691c57c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/Test_aget_object.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_object.d.T_aget_object_1;
+import dot.junit.opcodes.aget_object.d.T_aget_object_8;
+
+
+public class Test_aget_object extends DxTestCase {
+     /**
+     * @title get reference from array
+     */
+    public void testN1() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = new String[] {"a", "b"};
+        assertEquals("a", t.run(arr, 0));
+    }
+
+    /**
+     * @title  get reference from array
+     */
+    public void testN2() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = new String[] {"a", "b"};
+        assertEquals("b", t.run(arr, 1));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        String[] arr = new String[] {"a", "b"};
+        T_aget_object_8 t = new T_aget_object_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = new String[] {"a", "b"};
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aioobe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE2() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = new String[] {"a", "b"};
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aioobe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_aget_object_1 t = new T_aget_object_1();
+        String[] arr = null;
+        try {
+            t.run(arr, 0);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float[], int
+     */
+    public void testVFE4() {
+        try { 
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_object.d.T_aget_object_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.d
new file mode 100644
index 0000000..8f4a03b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_object_1.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.java
new file mode 100644
index 0000000..03345c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_object.d;
+
+public class T_aget_object_1 {
+    
+    public String run(String [] arr, int idx) {
+        return arr[idx];
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.d
new file mode 100644
index 0000000..cbdd6b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_object_2.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       const-wide v1, 1.0
+       aget-object v0, v7, v1
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.d
new file mode 100644
index 0000000..c89b572
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_object_3.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       const-wide v1, 1
+       aget-object v0, v7, v1
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.d
new file mode 100644
index 0000000..b881a16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_object_4.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.d
new file mode 100644
index 0000000..7db8d5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_object_5.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([FI)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.d
new file mode 100644
index 0000000..a349943
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_object_6.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.d
new file mode 100644
index 0000000..8b904d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_object_7.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v6
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.d
new file mode 100644
index 0000000..89ee37d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_object_8.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;F)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v8
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.java
new file mode 100644
index 0000000..c8b33e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_object.d;
+
+public class T_aget_object_8 {
+    
+    public String run(String [] arr, float idx) {
+        return null;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.d
new file mode 100644
index 0000000..e977101
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_object/d/T_aget_object_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_object_9.java
+.class public dot.junit.opcodes.aget_object.d.T_aget_object_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;I)Ljava/lang/String;
+.limit regs 9
+
+       aget-object v0, v7, v9
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/Test_aget_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/Test_aget_short.java
new file mode 100644
index 0000000..b0a12e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/Test_aget_short.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_short.d.T_aget_short_1;
+import dot.junit.opcodes.aget_short.d.T_aget_short_8;
+
+public class Test_aget_short extends DxTestCase {
+    /**
+     * @title get short from array
+     */
+    public void testN1() {
+        T_aget_short_1 t = new T_aget_short_1();
+        short[] arr = new short[2];
+        arr[1] = 10000;
+        assertEquals(10000, t.run(arr, 1));
+    }
+
+    /**
+     * @title  get short from array
+     */
+    public void testN2() {
+        T_aget_short_1 t = new T_aget_short_1();
+        short[] arr = new short[2];
+        arr[0] = 10000;
+        assertEquals(10000, t.run(arr, 0));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        short[] arr = new short[2];
+        T_aget_short_8 t = new T_aget_short_8();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_short_1 t = new T_aget_short_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_short_1 t = new T_aget_short_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_short_1 t = new T_aget_short_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_short.d.T_aget_short_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.d
new file mode 100644
index 0000000..3a1d451
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_short_1.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.java
new file mode 100644
index 0000000..d3ff01a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_short.d;
+
+public class T_aget_short_1 {
+    public short run(short[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.d
new file mode 100644
index 0000000..67bb914
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_short_2.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       const-wide v1, 1.0
+       aget-short v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.d
new file mode 100644
index 0000000..e55e873
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_short_3.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       const-wide v1, 1
+       aget-short v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.d
new file mode 100644
index 0000000..36e9428
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_short_4.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.d
new file mode 100644
index 0000000..990a231
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_short_5.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.d
new file mode 100644
index 0000000..5490c9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_short_6.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.d
new file mode 100644
index 0000000..06e1029
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_short_7.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       aget-short v0, v7, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.d
new file mode 100644
index 0000000..92f0d1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_short_8.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SF)S
+.limit regs 9
+
+       aget-short v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.java
new file mode 100644
index 0000000..d661d27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_short.d;
+
+public class T_aget_short_8 {
+    public short run(short[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.d
new file mode 100644
index 0000000..d337120
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_short/d/T_aget_short_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_short_9.java
+.class public dot.junit.opcodes.aget_short.d.T_aget_short_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SI)S
+.limit regs 9
+
+       aget-short v0, v7, v9
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/Test_aget_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/Test_aget_wide.java
new file mode 100644
index 0000000..73b3357
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/Test_aget_wide.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aget_wide.d.T_aget_wide_1;
+import dot.junit.opcodes.aget_wide.d.T_aget_wide_10;
+import dot.junit.opcodes.aget_wide.d.T_aget_wide_2;
+
+
+public class Test_aget_wide extends DxTestCase {
+
+    /**
+     * @title get long from array 
+     */
+    public void testN1() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        long[] arr = new long[2];
+        arr[1] = 1000000000000000000l;
+        assertEquals(1000000000000000000l, t.run(arr, 1));
+    }
+
+    /**
+     * @title get long from array
+     */
+    public void testN2() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        long[] arr = new long[2];
+        arr[0] = 1000000000000000000l;
+        assertEquals(1000000000000000000l, t.run(arr, 0));
+    }
+    
+    /**
+     * @title get double from array
+     */
+    public void testN3() {
+        T_aget_wide_2 t = new T_aget_wide_2();
+        double[] arr = new double[2];
+        arr[0] = 3.1415d;
+        assertEquals(3.1415d, t.run(arr, 0));
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float] makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        long[] arr = new long[2];
+        T_aget_wide_10 t = new T_aget_wide_10();
+        try {
+            t.run(arr, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, 2);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        try {
+            t.run(null, 2);
+            fail("expected NullPointerException");
+        } catch (NullPointerException np) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aget_wide_1 t = new T_aget_wide_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, -1);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aget_wide.d.T_aget_wide_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.d
new file mode 100644
index 0000000..08d842a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_wide_1.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.java
new file mode 100644
index 0000000..fdc8575
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_wide.d;
+
+public class T_aget_wide_1 {
+
+    public long run(long[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.d
new file mode 100644
index 0000000..5bbac0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_wide_10.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JF)J
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.java
new file mode 100644
index 0000000..c5f66a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_wide.d;
+
+public class T_aget_wide_10 {
+
+    public long run(long[] arr, float idx) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.d
new file mode 100644
index 0000000..e174a37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_11.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_wide_11.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       aget-wide v7, v6, v7
+       return-wide v7
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.d
new file mode 100644
index 0000000..5372845
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_wide_2.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DI)D
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.java
new file mode 100644
index 0000000..1b2aace
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aget_wide.d;
+
+public class T_aget_wide_2 {
+
+    public double run(double[] arr, int idx) {
+        return arr[idx];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.d
new file mode 100644
index 0000000..cf462df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_wide_3.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       const-wide v2, 1.0
+       aget-wide v0, v6, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.d
new file mode 100644
index 0000000..1c407ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_wide_5.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       const-wide v2, 10
+       aget-wide v0, v6, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.d
new file mode 100644
index 0000000..39054f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_wide_6.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;I)J
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.d
new file mode 100644
index 0000000..ace153e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_wide_7.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([II)J
+.limit regs 8
+
+       aget-wide v0, v6, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.d
new file mode 100644
index 0000000..dfe1b21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_wide_8.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       aget-wide v0, v6, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.d
new file mode 100644
index 0000000..fe00c45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aget_wide/d/T_aget_wide_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aget_wide_9.java
+.class public dot.junit.opcodes.aget_wide.d.T_aget_wide_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JI)J
+.limit regs 8
+
+       aget-wide v0, v6, v8
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/Test_and_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/Test_and_int.java
new file mode 100644
index 0000000..1422844
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/Test_and_int.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_int.d.T_and_int_1;
+import dot.junit.opcodes.and_int.d.T_and_int_5;
+
+
+public class Test_and_int extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(8, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(0xfffffff0, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(0xcafe, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float & int) makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_and_int_5 t = new T_and_int_5();
+        try {
+            t.run(123, 44.44f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_int_1 t = new T_and_int_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int.d.T_and_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int.d.T_and_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int.d.T_and_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int.d.T_and_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.d
new file mode 100644
index 0000000..b1f2984
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_1.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.java
new file mode 100644
index 0000000..72c1c1e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int.d;
+
+public class T_and_int_1 {
+
+    public int run(int a, int b) {
+        return a & b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_2.d
new file mode 100644
index 0000000..f57ddbc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_2.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       and-int v2, v0, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_3.d
new file mode 100644
index 0000000..033b3af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_3.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 31415
+       and-int v2, v0, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_4.d
new file mode 100644
index 0000000..9759124
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_4.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int v0, v2, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.d
new file mode 100644
index 0000000..b7480ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_5.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+       and-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.java
new file mode 100644
index 0000000..4f547a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int.d;
+
+public class T_and_int_5 {
+
+    public int run(int i, float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_6.d
new file mode 100644
index 0000000..7a3d212
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int/d/T_and_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_6.java
+.class public dot.junit.opcodes.and_int.d.T_and_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/Test_and_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/Test_and_int_2addr.java
new file mode 100644
index 0000000..bc8848b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/Test_and_int_2addr.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_1;
+import dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_5;
+
+public class Test_and_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(8, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(0xfffffff0, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(0xcafe, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float & int) makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_and_int_2addr_5 t = new T_and_int_2addr_5();
+        try {
+            t.run(1, 1.222f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_int_2addr_1 t = new T_and_int_2addr_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.d
new file mode 100644
index 0000000..faf2f0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_2addr_1.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.java
new file mode 100644
index 0000000..4df72cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_2addr.d;
+
+public class T_and_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a & b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.d
new file mode 100644
index 0000000..5906582
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_2addr_2.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       and-int/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.d
new file mode 100644
index 0000000..4d26208
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_2addr_3.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 31415
+       and-int/2addr v0, v3
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.d
new file mode 100644
index 0000000..6bfff72
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_2addr_4.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/2addr v2, v1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.d
new file mode 100644
index 0000000..c7183c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_2addr_5.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+       and-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.java
new file mode 100644
index 0000000..3cbb301
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_2addr.d;
+
+public class T_and_int_2addr_5 {
+
+    public int run(int i, float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.d
new file mode 100644
index 0000000..b5d1901
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_2addr/d/T_and_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_2addr_6.java
+.class public dot.junit.opcodes.and_int_2addr.d.T_and_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/Test_and_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/Test_and_int_lit16.java
new file mode 100644
index 0000000..c1c8bc6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/Test_and_int_lit16.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_5;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_1;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_2;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_3;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_4;
+import dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_9;
+
+public class Test_and_int_lit16 extends DxTestCase {
+    /**
+     * @title Arguments = 15 & 8
+     */
+    public void testN1() {
+        T_and_int_lit16_1 t = new T_and_int_lit16_1();
+        assertEquals(8, t.run());
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8 & -8
+     */
+    public void testN2() {
+        T_and_int_lit16_2 t = new T_and_int_lit16_2();
+        assertEquals(-8, t.run());
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_and_int_lit16_3 t = new T_and_int_lit16_3();
+        assertEquals(0xcafe, t.run());
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float & int) makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_and_int_lit16_9 t = new T_and_int_lit16_9();
+        try {
+            t.run(11.33f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_int_lit16_4 t = new T_and_int_lit16_4();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE & Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_int_lit16_5 t = new T_and_int_lit16_5();
+        assertEquals(0, t.run());
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double & int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.d
new file mode 100644
index 0000000..ebc9f85
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit16_1.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 15
+       and-int/lit16 v0, v0, 8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.java
new file mode 100644
index 0000000..1f166e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_1 {
+
+    public int run() {
+        return 15 & 8;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.d
new file mode 100644
index 0000000..ce46afc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit16_10.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/lit16 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.d
new file mode 100644
index 0000000..a76ada7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit16_2.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, -7
+       and-int/lit16 v0, v0, -8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.java
new file mode 100644
index 0000000..aa93cc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_2 {
+
+    public int run() {
+        return 0xfffffff8 & -8;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.d
new file mode 100644
index 0000000..c5f54e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit16_3.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 0xcafe
+       and-int/lit16 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.java
new file mode 100644
index 0000000..93558cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_3 {
+
+    public int run() {
+        return 0xcafe & -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.d
new file mode 100644
index 0000000..7f31097
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit16_4.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 0
+       and-int/lit16 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.java
new file mode 100644
index 0000000..12913cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_4 {
+
+    public int run() {
+        return 0 & -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.d
new file mode 100644
index 0000000..d7c68f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit16_5.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 32767
+       and-int/lit16 v0, v0, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.java
new file mode 100644
index 0000000..04e22b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_5 {
+
+    public int run() {
+        return Short.MAX_VALUE & Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.d
new file mode 100644
index 0000000..9c94b7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit16_6.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       const-wide v0, 1.0
+       and-int/lit16 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.d
new file mode 100644
index 0000000..a272dfa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit16_7.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       const-wide v0, 1
+       and-int/lit16 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.d
new file mode 100644
index 0000000..614d2b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit16_8.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       and-int/lit16 v2, v3, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.d
new file mode 100644
index 0000000..23b9e82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit16_9.java
+.class public dot.junit.opcodes.and_int_lit16.d.T_and_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+       and-int/lit16 v0, v3, 123
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.java
new file mode 100644
index 0000000..0af1796
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit16/d/T_and_int_lit16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit16.d;
+
+public class T_and_int_lit16_9 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/Test_and_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/Test_and_int_lit8.java
new file mode 100644
index 0000000..8fb6fbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/Test_and_int_lit8.java
@@ -0,0 +1,135 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_9;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_1;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_2;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_3;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_4;
+import dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_5;
+
+public class Test_and_int_lit8 extends DxTestCase {
+    /**
+     * @title Arguments = 15 & 8
+     */
+    public void testN1() {
+        T_and_int_lit8_1 t = new T_and_int_lit8_1();
+        assertEquals(8, t.run());
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8 & -8
+     */
+    public void testN2() {
+        T_and_int_lit8_2 t = new T_and_int_lit8_2();
+        assertEquals(-8, t.run());
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_and_int_lit8_3 t = new T_and_int_lit8_3();
+        assertEquals(0xcafe, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float & int) makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_and_int_lit8_9 t = new T_and_int_lit8_9();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }    
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_int_lit8_4 t = new T_and_int_lit8_4();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE & Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_int_lit8_5 t = new T_and_int_lit8_5();
+        assertEquals(0, t.run());
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.d
new file mode 100644
index 0000000..c357564
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit8_1.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 15
+       and-int/lit8 v0, v0, 8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.java
new file mode 100644
index 0000000..e5972bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_1 {
+
+    public int run() {
+        return 15 & 8;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.d
new file mode 100644
index 0000000..d9a6181
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit8_10.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       and-int/lit8 v0, v4, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.d
new file mode 100644
index 0000000..4161d0e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit8_2.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, -7
+       and-int/lit8 v0, v0, -8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.java
new file mode 100644
index 0000000..ed12bb0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_2 {
+
+    public int run() {
+        return 0xfffffff8 & -8;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.d
new file mode 100644
index 0000000..7b5fd5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit8_3.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 0xcafe
+       and-int/lit8 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.java
new file mode 100644
index 0000000..194af5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_3 {
+
+    public int run() {
+        return 0xcafe & -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.d
new file mode 100644
index 0000000..5b2fd88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit8_4.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 0
+       and-int/lit8 v0, v0, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.java
new file mode 100644
index 0000000..ac41a53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_4 {
+
+    public int run() {
+        return 0 & -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.d
new file mode 100644
index 0000000..9634339
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit8_5.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v0, 127
+       and-int/lit8 v0, v0, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.java
new file mode 100644
index 0000000..7d1e6d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_5 {
+
+    public int run() {
+        return Short.MAX_VALUE & Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.d
new file mode 100644
index 0000000..7e6a548
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit8_6.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       const-wide v0, 1.0
+       and-int/lit8 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.d
new file mode 100644
index 0000000..e09f8bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit8_7.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       const-wide v0, 1
+       and-int/lit8 v0, v0, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.d
new file mode 100644
index 0000000..78936ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit8_8.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       and-int/lit8 v2, v3, 1
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.d
new file mode 100644
index 0000000..cb63071
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_and_int_lit8_9.java
+.class public dot.junit.opcodes.and_int_lit8.d.T_and_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+       and-int/lit8 v0, v3, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.java
new file mode 100644
index 0000000..27542f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_int_lit8/d/T_and_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_int_lit8.d;
+
+public class T_and_int_lit8_9 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/Test_and_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/Test_and_long.java
new file mode 100644
index 0000000..e2ab252
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/Test_and_long.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_long.d.T_and_long_1;
+import dot.junit.opcodes.and_long.d.T_and_long_6;
+
+public class Test_and_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 0xfffffff8aal, 0xfffffff1aal
+     */
+    public void testN1() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(0xfffffff0aal, t.run(0xfffffff8aal, 0xfffffff1aal));
+    }
+
+    /**
+     * @title Arguments = 987654321, 123456789
+     */
+    public void testN2() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(39471121, t.run(987654321, 123456789));
+    }
+
+    /**
+     * @title Arguments = 0xABCDEF & -1
+     */
+    public void testN3() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(0xABCDEF, t.run(0xABCDEF, -1));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this (long & double) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_and_long_6 t = new T_and_long_6();
+        try {
+            t.run(1l, 5d);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_long_1 t = new T_and_long_1();
+        assertEquals(0, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long.d.T_and_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long.d.T_and_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long.d.T_and_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long.d.T_and_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.d
new file mode 100644
index 0000000..9bdc34e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_long_1.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.java
new file mode 100644
index 0000000..9e2b07b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_long.d;
+
+public class T_and_long_1 {
+
+    public long run(long a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_2.d
new file mode 100644
index 0000000..7c9185c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_long_2.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v10, 3.1415
+       and-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_3.d
new file mode 100644
index 0000000..b68acff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_long_3.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v10, 12345
+       and-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_4.d
new file mode 100644
index 0000000..97a1bcb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_long_4.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long v0, v9, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_5.d
new file mode 100644
index 0000000..b6948ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_long_5.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long v0, v10, v14
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.d
new file mode 100644
index 0000000..26ae8a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_and_long_6.java
+.class public dot.junit.opcodes.and_long.d.T_and_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 7
+
+       and-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.java
new file mode 100644
index 0000000..051a52a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long/d/T_and_long_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_long.d;
+
+public class T_and_long_6 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/Test_and_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/Test_and_long_2addr.java
new file mode 100644
index 0000000..34d2fc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/Test_and_long_2addr.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_1;
+import dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_6;
+
+public class Test_and_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 0xfffffff8aal, 0xfffffff1aal
+     */
+    public void testN1() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(0xfffffff0aal, t.run(0xfffffff8aal, 0xfffffff1aal));
+    }
+
+    /**
+     * @title Arguments = 987654321, 123456789
+     */
+    public void testN2() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(39471121, t.run(987654321, 123456789));
+    }
+
+    /**
+     * @title Arguments = 0xABCDEF & -1
+     */
+    public void testN3() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(0xABCDEF, t.run(0xABCDEF, -1));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this (long & double) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_and_long_2addr_6 t = new T_and_long_2addr_6();
+        try {
+            t.run(1l, 3.1d);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_and_long_2addr_1 t = new T_and_long_2addr_1();
+        assertEquals(0, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.d
new file mode 100644
index 0000000..aa61af94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_long_2addr_1.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.java
new file mode 100644
index 0000000..3b6d259
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_long_2addr.d;
+
+public class T_and_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a & b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.d
new file mode 100644
index 0000000..e1a4376
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_long_2addr_2.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v0, 3.1415
+       and-long/2addr v0, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.d
new file mode 100644
index 0000000..ba10fe6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_and_long_2addr_3.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v0, 1234
+       and-long/2addr v12, v0
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.d
new file mode 100644
index 0000000..9882eb3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_long_2addr_4.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long/2addr v12, v9
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.d
new file mode 100644
index 0000000..e7bb059
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_and_long_2addr_5.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       and-long/2addr v10, v14
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.d
new file mode 100644
index 0000000..b7ee27e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_and_long_2addr_6.java
+.class public dot.junit.opcodes.and_long_2addr.d.T_and_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 7
+
+       and-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.java
new file mode 100644
index 0000000..dd6a41d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/and_long_2addr/d/T_and_long_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.and_long_2addr.d;
+
+public class T_and_long_2addr_6 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/Test_aput.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/Test_aput.java
new file mode 100644
index 0000000..52ea328
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/Test_aput.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput.d.T_aput_1;
+import dot.junit.opcodes.aput.d.T_aput_8;
+
+public class Test_aput extends DxTestCase {
+
+    /**
+     * @title put int into array
+     */
+    public void testN1() {
+        T_aput_1 t = new T_aput_1();
+        int[] arr = new int[2];
+        t.run(arr, 1, 100000000);
+        assertEquals(100000000, arr[1]);
+    }
+
+    /**
+     * @title put int into array
+     */
+    public void testN2() {
+        T_aput_1 t = new T_aput_1();
+        int[] arr = new int[2];
+        t.run(arr, 0, 100000000);
+        assertEquals(100000000, arr[0]);
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        int[] arr = new int[2];
+        T_aput_8 t = new T_aput_8();
+        try {
+            t.run(arr, 3.14f, 111f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_1 t = new T_aput_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, 2, 100000000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_1 t = new T_aput_1();
+        try {
+            t.run(null, 2, 100000000);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_1 t = new T_aput_1();
+        int[] arr = new int[2];
+        try {
+            t.run(arr, -1, 100000000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput.d.T_aput_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.d
new file mode 100644
index 0000000..0c46208
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_1.java
+.class public dot.junit.opcodes.aput.d.T_aput_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([III)V
+.limit regs 11
+
+       aput v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.java
new file mode 100644
index 0000000..d9c47a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput.d;
+
+public class T_aput_1 {
+    public void run(int[] arr, int idx, int value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_2.d
new file mode 100644
index 0000000..7ef7585
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_2.java
+.class public dot.junit.opcodes.aput.d.T_aput_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IDI)V
+.limit regs 11
+
+
+       aput v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_3.d
new file mode 100644
index 0000000..f2872a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_3.java
+.class public dot.junit.opcodes.aput.d.T_aput_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IIJ)V
+.limit regs 11
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_4.d
new file mode 100644
index 0000000..6070220
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_4.java
+.class public dot.junit.opcodes.aput.d.T_aput_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;II)V
+.limit regs 10
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_5.d
new file mode 100644
index 0000000..9a37f62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_5.java
+.class public dot.junit.opcodes.aput.d.T_aput_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DII)V
+.limit regs 10
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_6.d
new file mode 100644
index 0000000..82dc6ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_6.java
+.class public dot.junit.opcodes.aput.d.T_aput_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JII)V
+.limit regs 10
+
+
+       aput v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_7.d
new file mode 100644
index 0000000..66017e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_7.java
+.class public dot.junit.opcodes.aput.d.T_aput_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([III)V
+.limit regs 10
+
+       aput v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.d
new file mode 100644
index 0000000..1f56222
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_8.java
+.class public dot.junit.opcodes.aput.d.T_aput_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IFF)V
+.limit regs 11
+
+       aput v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.java
new file mode 100644
index 0000000..87c6e5c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput.d;
+
+public class T_aput_8 {
+    public void run(int[] arr, float idx, float value) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_9.d
new file mode 100644
index 0000000..73c5932
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput/d/T_aput_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_9.java
+.class public dot.junit.opcodes.aput.d.T_aput_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([III)V
+.limit regs 11
+
+       aput v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/Test_aput_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/Test_aput_boolean.java
new file mode 100644
index 0000000..0ab9d04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/Test_aput_boolean.java
@@ -0,0 +1,206 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_boolean.d.T_aput_boolean_1;
+import dot.junit.opcodes.aput_boolean.d.T_aput_boolean_8;
+
+public class Test_aput_boolean extends DxTestCase {
+    /**  
+     * @title put boolean into array 
+     */
+    public void testN1() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        boolean[] arr = new boolean[2];
+        t.run(arr, 1, true);
+        assertEquals(true, arr[1]);
+    }
+
+    /**
+     * @title put boolean into array
+     */
+    public void testN2() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        boolean[] arr = new boolean[2];
+        t.run(arr, 0, true);
+        assertEquals(true, arr[0]);
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        boolean[] arr = new boolean[2];
+        T_aput_boolean_8 t = new T_aput_boolean_8();
+        try {
+            t.run(arr, 3.14f, true);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        boolean[] arr = new boolean[2];
+        try {
+            t.run(arr, 2, true);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        try {
+            t.run(null, 2, true);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_boolean_1 t = new T_aput_boolean_1();
+        boolean[] arr = new boolean[2];
+        try {
+            t.run(arr, -1, true);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B15 
+     * @title put value 2 into boolean array
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_boolean.d.T_aput_boolean_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.d
new file mode 100644
index 0000000..0d97f3cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_boolean_1.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.limit regs 11
+
+       aput-boolean v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.java
new file mode 100644
index 0000000..15a0fcf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_boolean.d;
+
+public class T_aput_boolean_1 {
+    public void run(boolean[] arr, int idx, boolean value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_10.d
new file mode 100644
index 0000000..64eb60e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_boolean_10.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.limit regs 11
+
+       const v10, 2
+       aput-boolean v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.d
new file mode 100644
index 0000000..2f73747
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_boolean_2.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZDZ)V
+.limit regs 11
+
+
+       aput-boolean v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.d
new file mode 100644
index 0000000..9eae917
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_boolean_3.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIJ)V
+.limit regs 11
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.d
new file mode 100644
index 0000000..54f5a19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_boolean_4.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IZ)V
+.limit regs 10
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.d
new file mode 100644
index 0000000..ecaf950
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_boolean_5.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIZ)V
+.limit regs 10
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.d
new file mode 100644
index 0000000..db2bf25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_boolean_6.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIZ)V
+.limit regs 10
+
+
+       aput-boolean v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.d
new file mode 100644
index 0000000..7e9ed2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_boolean_7.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.limit regs 10
+
+       aput-boolean v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.d
new file mode 100644
index 0000000..bf92b91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_boolean_8.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZFZ)V
+.limit regs 11
+
+       aput-boolean v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.java
new file mode 100644
index 0000000..09606e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_boolean.d;
+
+public class T_aput_boolean_8 {
+    public void run(boolean[] arr, float idx, boolean value) {
+        
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.d
new file mode 100644
index 0000000..e42fd3a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_boolean/d/T_aput_boolean_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_boolean_9.java
+.class public dot.junit.opcodes.aput_boolean.d.T_aput_boolean_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([ZIZ)V
+.limit regs 11
+
+       aput-boolean v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/Test_aput_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/Test_aput_byte.java
new file mode 100644
index 0000000..3c43916
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/Test_aput_byte.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_byte.d.T_aput_byte_1;
+import dot.junit.opcodes.aput_byte.d.T_aput_byte_8;
+
+public class Test_aput_byte extends DxTestCase {
+    /**
+     * @title put byte into array
+     */
+    public void testN1() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        byte[] arr = new byte[2];
+        t.run(arr, 1, (byte) 100);
+        assertEquals(100, arr[1]);
+    }
+
+    /**
+     * @title put byte into array
+     */
+    public void testN2() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        byte[] arr = new byte[2];
+        t.run(arr, 0, (byte) 100);
+        assertEquals(100, arr[0]);
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        byte[] arr = new byte[2];
+        T_aput_byte_8 t = new T_aput_byte_8();
+        try {
+            t.run(arr, 3.14f, (byte)1);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, 2, (byte) 100);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        try {
+            t.run(null, 2, (byte) 100);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_byte_1 t = new T_aput_byte_1();
+        byte[] arr = new byte[2];
+        try {
+            t.run(arr, -1, (byte) 100);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, short
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, short
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, short
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, short
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, short
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B15 
+     * @title put value 128 into byte array
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_byte.d.T_aput_byte_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.d
new file mode 100644
index 0000000..097ae50
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_byte_1.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.limit regs 11
+
+       aput-byte v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.java
new file mode 100644
index 0000000..57561be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_byte.d;
+
+public class T_aput_byte_1 {
+    public void run(byte[] arr, int idx, byte value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_10.d
new file mode 100644
index 0000000..b65ae76
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_byte_10.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.limit regs 11
+
+       const v10, 128
+       aput-byte v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.d
new file mode 100644
index 0000000..55f781e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_byte_2.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BDB)V
+.limit regs 11
+
+
+       aput-byte v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.d
new file mode 100644
index 0000000..56844377
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_byte_3.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIJ)V
+.limit regs 11
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.d
new file mode 100644
index 0000000..06e4eff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_byte_4.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IB)V
+.limit regs 10
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.d
new file mode 100644
index 0000000..2835e5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_byte_5.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIB)V
+.limit regs 10
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.d
new file mode 100644
index 0000000..66da57c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_byte_6.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIB)V
+.limit regs 10
+
+
+       aput-byte v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.d
new file mode 100644
index 0000000..4fb862b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_byte_7.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.limit regs 10
+
+       aput-byte v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.d
new file mode 100644
index 0000000..0c4914e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_byte_8.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BFB)V
+.limit regs 11
+
+       aput-byte v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.java
new file mode 100644
index 0000000..00f9d64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_byte.d;
+
+public class T_aput_byte_8 {
+    public void run(byte[] arr, float idx, byte value) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.d
new file mode 100644
index 0000000..e644e87
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_byte/d/T_aput_byte_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_byte_9.java
+.class public dot.junit.opcodes.aput_byte.d.T_aput_byte_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([BIB)V
+.limit regs 11
+
+       aput-byte v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/Test_aput_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/Test_aput_char.java
new file mode 100644
index 0000000..4253346
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/Test_aput_char.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_char.d.T_aput_char_1;
+import dot.junit.opcodes.aput_char.d.T_aput_char_8;
+
+
+public class Test_aput_char extends DxTestCase {
+    /**
+     * @title put char into array
+     */
+    public void testN1() {
+        T_aput_char_1 t = new T_aput_char_1();
+        char[] arr = new char[2];
+        t.run(arr, 1, 'g');
+        assertEquals('g', arr[1]);
+    }
+
+    /**
+     * @title put char into array
+     */
+    public void testN2() {
+        T_aput_char_1 t = new T_aput_char_1();
+        char[] arr = new char[2];
+        t.run(arr, 0, 'g');
+        assertEquals('g', arr[0]);
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        char[] arr = new char[2];
+        T_aput_char_8 t = new T_aput_char_8();
+        try {
+            t.run(arr, 3.14f, 'g');
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_char_1 t = new T_aput_char_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, 2, 'g');
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_char_1 t = new T_aput_char_1();
+        try {
+            t.run(null, 2, 'g');
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_char_1 t = new T_aput_char_1();
+        char[] arr = new char[2];
+        try {
+            t.run(arr, -1, 'g');
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+ 
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, char
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, char
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, char
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, char
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, char
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B15 
+     * @title put value 65536 into char array
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_char.d.T_aput_char_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.d
new file mode 100644
index 0000000..409eade
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_char_1.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.limit regs 11
+
+       aput-char v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.java
new file mode 100644
index 0000000..65f4cd3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_char.d;
+
+public class T_aput_char_1 {
+    public void run(char[] arr, int idx, char value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_10.d
new file mode 100644
index 0000000..dd68792
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_char_10.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.limit regs 11
+
+       const v10, 65536
+       aput-char v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.d
new file mode 100644
index 0000000..0408006
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_char_2.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CDC)V
+.limit regs 11
+
+
+       aput-char v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.d
new file mode 100644
index 0000000..5010da6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_char_3.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIJ)V
+.limit regs 11
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.d
new file mode 100644
index 0000000..67d67ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_char_4.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IC)V
+.limit regs 10
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.d
new file mode 100644
index 0000000..cd0384a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_char_5.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIC)V
+.limit regs 10
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.d
new file mode 100644
index 0000000..2a2381d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_char_6.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIC)V
+.limit regs 10
+
+
+       aput-char v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.d
new file mode 100644
index 0000000..b1e4c9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_char_7.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.limit regs 10
+
+       aput-char v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.d
new file mode 100644
index 0000000..f78376d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_char_8.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CFC)V
+.limit regs 11
+
+       aput-char v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.java
new file mode 100644
index 0000000..ea02ba1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_char.d;
+
+public class T_aput_char_8 {
+    public void run(char[] arr, float idx, char value) {
+        
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.d
new file mode 100644
index 0000000..1077039
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_char/d/T_aput_char_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_char_9.java
+.class public dot.junit.opcodes.aput_char.d.T_aput_char_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([CIC)V
+.limit regs 11
+
+       aput-char v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/Test_aput_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/Test_aput_object.java
new file mode 100644
index 0000000..cb50224
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/Test_aput_object.java
@@ -0,0 +1,245 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_object.d.T_aput_object_1;
+import dot.junit.opcodes.aput_object.d.T_aput_object_12;
+import dot.junit.opcodes.aput_object.d.T_aput_object_2;
+import dot.junit.opcodes.aput_object.d.T_aput_object_3;
+import dot.junit.opcodes.aput_object.d.T_aput_object_4;
+
+public class Test_aput_object extends DxTestCase {
+    /**
+     * @title put reference into array
+     */
+    public void testN1() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] arr = new String[2];
+        t.run(arr, 0, "hello");
+        assertEquals("hello", arr[0]);
+    }
+
+    /**
+     * @title put reference into array
+     */
+    public void testN2() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] value = {"world", null, ""};
+        String[] arr = new String[2];
+        for (int i = 0; i < value.length; i++) {
+            t.run(arr, 1, value[i]);
+            assertEquals(value[i], arr[1]);
+        }
+    }
+
+    /**
+     * @title put reference into array
+     */
+    public void testN3() {
+        T_aput_object_2 t = new T_aput_object_2();
+        Integer[] arr = new Integer[2];
+        Integer value = new Integer(12345);
+        t.run(arr, 0, value);
+        assertEquals(value, arr[0]);
+    }
+
+    /**
+     * @title Check assignement compatibility rules
+     */
+    public void testN4() {
+        T_aput_object_3 t = new T_aput_object_3();
+        assertEquals(3, t.run());
+
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        String[] arr = new String[2];
+        T_aput_object_12 t = new T_aput_object_12();
+        try {
+            t.run(arr, 3.14f, new String());
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, arr.length, "abc");
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE2() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, -1, "abc");
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_aput_object_1 t = new T_aput_object_1();
+        String[] arr = null;
+        try {
+            t.run(arr, 0, "abc");
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayStoreException
+     */
+    public void testE4() {
+        T_aput_object_4 t = new T_aput_object_4();
+        String[] arr = new String[2];
+        try {
+            t.run(arr, 0, t);
+            fail("expected ArrayStoreException");
+        } catch (ArrayStoreException aie) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, String
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, String
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float[], int, String
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, String
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, String
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B15 
+     * @title put integer into array of references
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_object.d.T_aput_object_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.d
new file mode 100644
index 0000000..c629f3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_object_1.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.limit regs 11
+
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.java
new file mode 100644
index 0000000..1361e82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_1 {
+
+    public void run(String[] arr, int idx, String value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.d
new file mode 100644
index 0000000..a11e1ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_10.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_object_10.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.limit regs 10
+
+       aput-object v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.d
new file mode 100644
index 0000000..1b4f7ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_11.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_object_11.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.limit regs 11
+
+       aput-object v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.d
new file mode 100644
index 0000000..35160aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_object_12.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;FLjava/lang/String;)V
+.limit regs 11
+
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.java
new file mode 100644
index 0000000..f55edbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_12 {
+
+    public void run(String[] arr, float idx, String value) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.d
new file mode 100644
index 0000000..f9670ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_object_13.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/String;)V
+.limit regs 11
+
+       const v10, 1
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.d
new file mode 100644
index 0000000..4e1cad0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_object_2.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Integer;ILjava/lang/Integer;)V
+.limit regs 11
+
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.java
new file mode 100644
index 0000000..4b2204e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_2 {
+    
+    public void run(Integer[] arr, int idx, Integer value) {
+        arr[idx] = value;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d
new file mode 100644
index 0000000..4b2642d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.d
@@ -0,0 +1,132 @@
+; Copyright (C) 2008 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.
+
+.source TestStubs.java
+.interface abstract dot.junit.opcodes.aput_object.d.SuperInterface
+
+.source TestStubs.java
+.interface public dot.junit.opcodes.aput_object.d.SuperInterface2
+    
+.source TestStubs.java    
+.class public dot.junit.opcodes.aput_object.d.SuperClass 
+.super java/lang/Object
+.implements dot.junit.opcodes.aput_object.d.SuperInterface
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+    
+.source TestStubs.java
+.class public dot.junit.opcodes.aput_object.d.SubClass 
+.super dot.junit.opcodes.aput_object.d.SuperClass
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/aput_object/d/SuperClass/<init>()V
+       return-void
+.end method
+
+
+.source T_aput_object_3.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 32
+
+    const v1, 0
+
+    const v0, 1
+    ; v2 = SubClass[]
+    new-array v2, v0, [Ldot/junit/opcodes/aput_object/d/SubClass;
+    
+    ; v3 =  SuperClass[]
+    new-array v3, v0, [Ldot/junit/opcodes/aput_object/d/SuperClass;
+
+    ; v4 =     SubClass
+    new-instance v4, dot/junit/opcodes/aput_object/d/SubClass
+    invoke-direct {v4}, dot/junit/opcodes/aput_object/d/SubClass/<init>()V
+
+    ; v5 =     SuperClass
+    new-instance v5, dot/junit/opcodes/aput_object/d/SuperClass
+    invoke-direct {v5}, dot/junit/opcodes/aput_object/d/SuperClass/<init>()V
+
+    ; v6 = SuperInterface[]
+    new-array v6, v0, [Ldot/junit/opcodes/aput_object/d/SuperInterface;
+
+    ; v7 =     Object[]
+    new-array v7, v0, [Ljava/lang/Object;
+    
+    ; v8 = SuperInterface2[]
+    new-array v8, v0, [Ldot/junit/opcodes/aput_object/d/SuperInterface2;
+    
+    const/4 v0, 0
+    
+; (SubClass -> SuperClass[])
+    aput-object v4, v3, v0
+    
+; (SubClass -> SuperInterface[])
+    aput-object v4, v6, v0
+    
+; (SubClass -> Object[])
+    aput-object v4, v7, v0
+        
+; !(SuperClass -> SubClass[])    
+Label10:        
+    aput-object v5, v2, v0
+Label11:    
+    goto Label2
+Label12:
+    add-int/lit8 v1, v1, 1
+    goto Label2
+        
+; !(SuperClass -> SuperInterface2[])    
+Label2:
+Label20:    
+    aput-object v5, v8, v0
+Label21:    
+    goto Label3
+Label22:
+    add-int/lit8 v1, v1, 1
+    goto Label3
+
+; !(SubClass[] -> SuperInterface[])    
+Label3:
+Label30:    
+    aput-object v2, v6, v0
+Label31:    
+    goto Label4
+Label32:    
+    add-int/lit8 v1, v1, 1
+    goto Label4
+
+Label4:
+    return v1
+    
+.catch java/lang/ArrayStoreException from Label10 to Label11 using Label12
+.catch java/lang/ArrayStoreException from Label20 to Label21 using Label22
+.catch java/lang/ArrayStoreException from Label30 to Label31 using Label32
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.java
new file mode 100644
index 0000000..1a90fd1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_3 {
+    
+    public int run() {
+        return 3;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.d
new file mode 100644
index 0000000..f79b817
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_object_4.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;ILjava/lang/Object;)V
+.limit regs 11
+       aput-object v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.java
new file mode 100644
index 0000000..52e935b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_4.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_object.d;
+
+public class T_aput_object_4 {
+
+//  public void run(Integer[] arr, int idx) {
+    /* similar to
+     * Object x[] = new String[3];
+     * x[0] = new Integer(0);
+     */
+//  }
+    
+    public void run(String[] arr, int idx, Object a) {
+        //arr[idx] = a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.d
new file mode 100644
index 0000000..441ac56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_object_5.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;DLjava/lang/String;)V
+.limit regs 11
+
+       aput-object v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.d
new file mode 100644
index 0000000..5786bbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_object_6.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/String;IJ)V
+.limit regs 11
+
+       aput-object v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.d
new file mode 100644
index 0000000..dfdc953
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_object_7.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;ILjava/lang/String;)V
+.limit regs 11
+
+       aput-object v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.d
new file mode 100644
index 0000000..e6259bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_object_8.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([FILjava/lang/String;)V
+.limit regs 10
+
+       aput-object v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.d
new file mode 100644
index 0000000..96bced3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_object/d/T_aput_object_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_object_9.java
+.class public dot.junit.opcodes.aput_object.d.T_aput_object_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JILjava/lang/String;)V
+.limit regs 10
+
+       aput-object v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/Test_aput_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/Test_aput_short.java
new file mode 100644
index 0000000..350d999
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/Test_aput_short.java
@@ -0,0 +1,205 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_short.d.T_aput_short_1;
+import dot.junit.opcodes.aput_short.d.T_aput_short_8;
+
+public class Test_aput_short extends DxTestCase {
+    /**
+     * @title put short into array
+     */
+    public void testN1() {
+        T_aput_short_1 t = new T_aput_short_1();
+        short[] arr = new short[2];
+        t.run(arr, 1, (short) 10000);
+        assertEquals(10000, arr[1]);
+    }
+
+    /**
+     * @title put short into array
+     */
+    public void testN2() {
+        T_aput_short_1 t = new T_aput_short_1();
+        short[] arr = new short[2];
+        t.run(arr, 0, (short) 10000);
+        assertEquals(10000, arr[0]);
+    }
+
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN3() {
+        short[] arr = new short[2];
+        T_aput_short_8 t = new T_aput_short_8();
+        try {
+            t.run(arr, 3.14f, (short)111);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_short_1 t = new T_aput_short_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, 2, (short) 10000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_short_1 t = new T_aput_short_1();
+        try {
+            t.run(null, 2, (short) 10000);
+            fail("expected NullPointerException");
+        } catch (NullPointerException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_short_1 t = new T_aput_short_1();
+        short[] arr = new short[2];
+        try {
+            t.run(arr, -1, (short) 10000);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double[], int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long[], int, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B15 
+     * @title put value 32768 into array of shorts
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_short.d.T_aput_short_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.d
new file mode 100644
index 0000000..f89cbb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_short_1.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.limit regs 11
+
+       aput-short v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.java
new file mode 100644
index 0000000..42cefa9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_short.d;
+
+public class T_aput_short_1 {
+    public void run(short[] arr, int idx, short value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_10.d
new file mode 100644
index 0000000..bbb541c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_short_10.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.limit regs 11
+
+       const v10, 32768    
+       aput-short v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.d
new file mode 100644
index 0000000..9d63757
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_short_2.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SDS)V
+.limit regs 11
+
+
+       aput-short v10, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.d
new file mode 100644
index 0000000..c9990b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_short_3.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIJ)V
+.limit regs 11
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.d
new file mode 100644
index 0000000..24b2d92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_short_4.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IS)V
+.limit regs 10
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.d
new file mode 100644
index 0000000..4a9dabc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_short_5.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIS)V
+.limit regs 10
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.d
new file mode 100644
index 0000000..ed8cfd3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_short_6.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIS)V
+.limit regs 10
+
+
+       aput-short v9, v7, v8
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.d
new file mode 100644
index 0000000..9927025
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_short_7.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.limit regs 10
+
+       aput-short v9, v7, v6
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.d
new file mode 100644
index 0000000..099de06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_short_8.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SFS)V
+.limit regs 11
+
+       aput-short v10, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.java
new file mode 100644
index 0000000..e973865
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_short.d;
+
+public class T_aput_short_8 {
+    public void run(short[] arr, float idx, short value) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.d
new file mode 100644
index 0000000..46efab3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_short/d/T_aput_short_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_short_9.java
+.class public dot.junit.opcodes.aput_short.d.T_aput_short_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([SIS)V
+.limit regs 11
+
+       aput-short v11, v8, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/Test_aput_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/Test_aput_wide.java
new file mode 100644
index 0000000..4b7f0ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/Test_aput_wide.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.aput_wide.d.T_aput_wide_1;
+import dot.junit.opcodes.aput_wide.d.T_aput_wide_2;
+import dot.junit.opcodes.aput_wide.d.T_aput_wide_6;
+import dot.junit.opcodes.aput_wide.d.T_aput_wide_9;
+
+
+public class Test_aput_wide extends DxTestCase {
+    /**
+     * @title put long into array
+     */
+    public void testN1() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        long[] arr = new long[2];
+        t.run(arr, 1, 100000000000l);
+        assertEquals(100000000000l, arr[1]);
+    }
+
+    /**
+     * @title put long into array
+     */
+    public void testN2() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        long[] arr = new long[2];
+        t.run(arr, 0, 100000000000l);
+        assertEquals(100000000000l, arr[0]);
+    }
+
+    /**
+     * @title put double into array
+     */
+    public void testN3() {
+        T_aput_wide_2 t = new T_aput_wide_2();
+        double[] arr = new double[2];
+        t.run(arr, 0, 3.1415d);
+        assertEquals(3.1415d, arr[0]);
+    }
+    
+    /**
+     * @title Type of index argument - float. Dalvik doens't distinguish 64-bits types internally,
+     * so this array[float]=value makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        long[] arr = new long[2];
+        T_aput_wide_9 t = new T_aput_wide_9();
+        try {
+            t.run(arr, 3.14f, 111);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Try to put long into double[]. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation makes no sense but shall not crash the VM.
+     */
+    public void testN5() {
+        double[] arr = new double[2];
+        T_aput_wide_6 t = new T_aput_wide_6();
+        try {
+            t.run(arr, 0, 1234l);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException
+     */
+    public void testE1() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, 2, 100000000000l);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        try {
+            t.run(null, 1, 100000000000l);
+            fail("expected NullPointerException");
+        } catch (NullPointerException np) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected ArrayIndexOutOfBoundsException (negative index)
+     */
+    public void testE3() {
+        T_aput_wide_1 t = new T_aput_wide_1();
+        long[] arr = new long[2];
+        try {
+            t.run(arr, -1, 100000000000l);
+            fail("expected ArrayIndexOutOfBoundsException");
+        } catch (ArrayIndexOutOfBoundsException aie) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, double, long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, int, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - object, int, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int[], int, long
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - array, reference, long
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.aput_wide.d.T_aput_wide_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.d
new file mode 100644
index 0000000..2890417
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_wide_1.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.java
new file mode 100644
index 0000000..385db2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_wide.d;
+
+public class T_aput_wide_1 {
+
+    public void run(long[] arr, int idx, long value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.d
new file mode 100644
index 0000000..bf314a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_wide_10.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIJ)V
+.limit regs 14
+
+       aput-wide v14, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.d
new file mode 100644
index 0000000..793338f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_wide_2.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DID)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.java
new file mode 100644
index 0000000..e333794
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_wide.d;
+
+public class T_aput_wide_2 {
+
+    public void run(double[] arr, int idx, double value) {
+        arr[idx] = value;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.d
new file mode 100644
index 0000000..4486392
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_wide_3.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JDJ)V
+.limit regs 14
+
+       aput-wide v12, v9, v10
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.d
new file mode 100644
index 0000000..980724f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_wide_4.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JII)V
+.limit regs 14
+
+       aput-wide v13, v11, v12
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.d
new file mode 100644
index 0000000..f4d3354
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_wide_5.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;IJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.d
new file mode 100644
index 0000000..e5f58d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_wide_6.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([DIJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.java
new file mode 100644
index 0000000..d1466a3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_wide.d;
+
+public class T_aput_wide_6 {
+
+    public void run(double[] arr, int idx, long value) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.d
new file mode 100644
index 0000000..c862b0d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_wide_7.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([IIJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.d
new file mode 100644
index 0000000..06e1aa0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_wide_8.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JIJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v9
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.d
new file mode 100644
index 0000000..41777df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_aput_wide_9.java
+.class public dot.junit.opcodes.aput_wide.d.T_aput_wide_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([JFJ)V
+.limit regs 14
+
+       aput-wide v12, v10, v11
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.java
new file mode 100644
index 0000000..c08f9be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/aput_wide/d/T_aput_wide_9.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.aput_wide.d;
+
+public class T_aput_wide_9 {
+
+    public void run(long[] arr, float idx, long value) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/Test_array_length.java b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/Test_array_length.java
new file mode 100644
index 0000000..f49cccb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/Test_array_length.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.array_length;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.array_length.d.T_array_length_1;
+import dot.junit.opcodes.array_length.d.T_array_length_4;
+
+
+public class Test_array_length extends DxTestCase {
+    /**
+     * @title get length of array of references
+     */
+    public void testN1() {
+        T_array_length_1 t = new T_array_length_1();
+        String[] a = new String[5];
+        assertEquals(5, t.run(a));
+    }
+    
+    /**
+     * @title get length of array of doubles
+     */
+    public void testN2() {
+        T_array_length_4 t = new T_array_length_4();
+        double[] a = new double[10];
+        assertEquals(10, t.run(a));
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testNPE1() {
+        T_array_length_1 t = new T_array_length_1();
+        try {
+            t.run(null);
+            fail("NPE expected");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - Object
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.array_length.jm.T_array_length_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.array_length.jm.T_array_length_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.array_length.jm.T_array_length_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.d
new file mode 100644
index 0000000..3981009
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_array_length_1.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Object;)I
+.limit regs 5
+
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.java
new file mode 100644
index 0000000..fd30072
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.array_length.d;
+
+public class T_array_length_1 {
+
+    public int run(Object[] arr) {
+        return arr.length;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_2.d
new file mode 100644
index 0000000..b1b015c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_array_length_2.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 5
+
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_3.d
new file mode 100644
index 0000000..01bdaf0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_array_length_3.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 5
+    
+       const v4, 1234
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.d
new file mode 100644
index 0000000..af48dfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_array_length_4.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([D)I
+.limit regs 5
+
+       array-length v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.java
new file mode 100644
index 0000000..b3fa51f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.array_length.d;
+
+public class T_array_length_4 {
+
+    public int run(double[] arr) {
+        return arr.length;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_5.d
new file mode 100644
index 0000000..c7b1f9e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/array_length/d/T_array_length_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_array_length_5.java
+.class public dot.junit.opcodes.array_length.d.T_array_length_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Object;)V
+.limit regs 5
+
+       array-length v5, v4
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/TestStubs.java
new file mode 100644
index 0000000..67f8f04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/TestStubs.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.check_cast;
+
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/Test_check_cast.java b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/Test_check_cast.java
new file mode 100644
index 0000000..78a0479
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/Test_check_cast.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.check_cast;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.check_cast.d.T_check_cast_1;
+import dot.junit.opcodes.check_cast.d.T_check_cast_2;
+import dot.junit.opcodes.check_cast.d.T_check_cast_3;
+import dot.junit.opcodes.check_cast.d.T_check_cast_7;
+
+
+public class Test_check_cast extends DxTestCase {
+   
+    
+    /**
+     * @title (String)(Object)String
+     */
+    public void testN1() {
+        T_check_cast_1 t = new T_check_cast_1();
+        String s = "";
+        assertEquals(s, t.run(s));
+    }
+
+    /**
+     * @title (String)(Object)null
+     */
+    public void testN2() {
+        T_check_cast_1 t = new T_check_cast_1();
+        assertNull(t.run(null));
+    }
+
+    /**
+     * @title check assignment compatibility rules
+     */
+    public void testN4() {
+        T_check_cast_2 t = new T_check_cast_2();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title expected ClassCastException
+     */
+    public void testE1() {
+        T_check_cast_1 t = new T_check_cast_1();
+        try {
+            t.run(t);
+            fail("expected ClassCastException");
+        } catch (ClassCastException iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A18 
+     * @title  constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to access inaccessible class, expect throws IllegalAccessError
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.check_cast.TestStubs
+        //@uses dot.junit.opcodes.check_cast.d.T_check_cast_3
+        T_check_cast_3 t = new T_check_cast_3();
+        try {
+            t.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to access undefined class, expect throws NoClassDefFoundError on
+     * first access
+     */
+    public void testVFE6() {
+        T_check_cast_7 t = new T_check_cast_7();
+        try {
+            t.run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError iae) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint A18 
+     * @title  constant pool type
+     */    
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.check_cast.d.T_check_cast_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.d
new file mode 100644
index 0000000..9c2f074
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_check_cast_1.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+.limit regs 5
+
+       check-cast v4, java/lang/String
+       return-object v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.java
new file mode 100644
index 0000000..4387def
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.check_cast.d;
+
+public class T_check_cast_1 {
+
+    public String run(Object o) {
+        return (String)o;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.d
new file mode 100644
index 0000000..b7472cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.d
@@ -0,0 +1,149 @@
+; Copyright (C) 2008 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.
+
+.source TestStubs.java
+.interface public dot.junit.opcodes.check_cast.d.T_check_cast_2.SuperInterface
+
+.source TestStubs.java    
+.interface public dot.junit.opcodes.check_cast.d.T_check_cast_2.SuperInterface2
+
+.source TestStubs.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_2.SuperClass 
+.super java/lang/Object
+.implements dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface
+    
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method    
+
+.source TestStubs.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_2.SubClass 
+.super dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass/<init>()V
+       return-void
+.end method
+
+
+.source T_check_cast_2.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 20
+
+    const v1, 0
+    
+; (SubClass instanceof SuperClass)    
+    new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass/<init>()V
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass
+    
+; (SubClass[] instanceof SuperClass[])    
+    const v11, 1
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+    check-cast v10, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;
+
+    
+; (SubClass[] instanceof Object)    
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+    check-cast v10, java/lang/Object
+    
+; (SubClass instanceof SuperInterface)    
+    new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass/<init>()V    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface
+        
+
+; !(SuperClass instanceof SubClass)    
+Label1:
+    new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass
+    invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass/<init>()V
+Label10:    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+Label11:    
+    goto Label2
+Label12:
+    add-int/lit16 v1, v1, 1
+    goto Label2
+        
+; !(SubClass instanceof SuperInterface2)    
+Label2:
+    new-instance v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass/<init>()V    
+Label20:    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface2
+Label21:    
+    goto Label3
+Label22:
+    add-int/lit16 v1, v1, 1
+    goto Label3
+
+; !(SubClass[] instanceof SuperInterface)    
+Label3:
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+Label30:    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SuperInterface
+Label31:    
+    goto Label4
+Label32:    
+    add-int/lit16 v1, v1, 1
+    goto Label4
+
+; !(SubClass[] instanceof SubClass)    
+Label4:
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+Label40:    
+    check-cast v10, dot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass
+Label41:    
+    goto Label5
+Label42:
+    add-int/lit16 v1, v1, 1
+    goto Label5    
+    
+; !(SuperClass[] instanceof SubClass[])    
+Label5:
+    new-array v10, v11, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SuperClass;
+Label50:    
+    check-cast v10, [Ldot/junit/opcodes/check_cast/d/T_check_cast_2/SubClass;
+Label51:    
+    goto Label6
+Label52:
+    add-int/lit16 v1, v1, 1
+    
+Label6:        
+    return v1
+    
+.catch java/lang/ClassCastException from Label10 to Label11 using Label12
+.catch java/lang/ClassCastException from Label20 to Label21 using Label22
+.catch java/lang/ClassCastException from Label30 to Label31 using Label32
+.catch java/lang/ClassCastException from Label40 to Label41 using Label42
+.catch java/lang/ClassCastException from Label50 to Label51 using Label52
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.java
new file mode 100644
index 0000000..5e55188
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.check_cast.d;
+
+public class T_check_cast_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.d
new file mode 100644
index 0000000..d269a31
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_check_cast_3.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+       check-cast v5, dot/junit/opcodes/check_cast/TestStubs
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.java
new file mode 100644
index 0000000..4c4f153
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.check_cast.d;
+
+public class T_check_cast_3 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.d
new file mode 100644
index 0000000..77e28d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_check_cast_4.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+.limit regs 5
+
+       check-cast v4, java/lang/String
+       return-object v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.dfh
new file mode 100644
index 0000000..ed092c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_4.dfh
@@ -0,0 +1,264 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/check_cast/d/T_check_cast_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/check_cast/d/T_check_cast_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 1f0a4ad6
+    D6 4A 0A 1F 
+// parsed: offset 12, len 20: signature           : c885...5be2
+    C8 85 20 53 64 78 EF B4 92 49 06 A9 EC FA 7E 44 D0 A3 5B E2 
+// parsed: offset 32, len 4: file_size           : 576
+    40 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 440 (0x0001b8)
+    B8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 336
+    50 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "LL"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 306 (0x000132) "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+    32 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 355 (0x000163) "Ljava/lang/Object;"
+    63 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 375 (0x000177) "Ljava/lang/String;"
+    77 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "T_check_cast_4.java"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 416 (0x0001a0) "V"
+    A0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 419 (0x0001a3) "run"
+    A3 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "LL"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 288 (0x000120)
+    01 00 00 00 02 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_check_cast_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 424 (0x0001a8)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 A8 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.check_cast.d.T_check_cast_4.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.check_cast.d.T_check_cast_4.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: check-cast v4, Ljava/lang/String; // class@0002
+//@mod            1F 04 02 00 
+            1F 04 02 01 
+        // parsed: offset 284, len 2: |0002: return-object v4
+            11 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 4: TYPE_STRING_DATA_ITEM [1] "LL"
+    02 4C 4C 00 
+// parsed: offset 306, len 49: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 68 65 63 6B 5F 63 61 73 74 2F 64 2F 54 5F 63 68 65 63 6B 5F 63 61 73 74 5F 34 3B 00 
+// parsed: offset 355, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 375, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 395, len 21: TYPE_STRING_DATA_ITEM [5] "T_check_cast_4.java"
+    13 54 5F 63 68 65 63 6B 5F 63 61 73 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 416, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 419, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/check_cast/d/T_check_cast_4;"
+    // parsed: offset 424, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 425, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 426, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 427, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 429, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 432, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 434, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 435, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 436, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 438, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 440, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 444, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 456, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 468, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 480, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 492, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 504, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 516, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 528, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 540, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 552, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 20 00 00 01 00 00 00 A8 01 00 00 
+    // parsed: offset 564, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 440 (0x0001b8)
+        00 10 00 00 01 00 00 00 B8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.d
new file mode 100644
index 0000000..b76a68e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_check_cast_5.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+       const v3, 1234
+       check-cast v3, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.d
new file mode 100644
index 0000000..7e26639
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_check_cast_6.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+
+       check-cast v5, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.d
new file mode 100644
index 0000000..8c7af68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_check_cast_7.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       check-cast v5, dot/junit/opcodes/check_cast/Test_check_castN
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.java
new file mode 100644
index 0000000..fa941a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.check_cast.d;
+
+public class T_check_cast_7 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.d
new file mode 100644
index 0000000..645436f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_check_cast_8.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+       const-wide v0, 1234
+       check-cast v0, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.d
new file mode 100644
index 0000000..e44cc10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_check_cast_9.java
+.class public dot.junit.opcodes.check_cast.d.T_check_cast_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Ljava/lang/String;
+.limit regs 5
+
+       check-cast v4, java/lang/String
+       return-object v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.dfh
new file mode 100644
index 0000000..419f6e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/check_cast/d/T_check_cast_9.dfh
@@ -0,0 +1,264 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/check_cast/d/T_check_cast_9.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/check_cast/d/T_check_cast_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : d6bb4b2e
+    2E 4B BB D6 
+// parsed: offset 12, len 20: signature           : 1ebe...570d
+    1E BE 42 FD BC AF 7F 9D AB 10 86 B8 F1 D5 98 36 F6 E6 57 0D 
+// parsed: offset 32, len 4: file_size           : 576
+    40 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 440 (0x0001b8)
+    B8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 336
+    50 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "LL"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 306 (0x000132) "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+    32 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 355 (0x000163) "Ljava/lang/Object;"
+    63 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 375 (0x000177) "Ljava/lang/String;"
+    77 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "T_check_cast_9.java"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 416 (0x0001a0) "V"
+    A0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 419 (0x0001a3) "run"
+    A3 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "LL"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 288 (0x000120)
+    01 00 00 00 02 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_check_cast_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 424 (0x0001a8)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 A8 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.check_cast.d.T_check_cast_9.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.check_cast.d.T_check_cast_9.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: check-cast v4, Ljava/lang/String; // class@0002
+//@mod            1F 04 02 00 
+            1F 04 03 00 
+        // parsed: offset 284, len 2: |0002: return-object v4
+            11 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 4: TYPE_STRING_DATA_ITEM [1] "LL"
+    02 4C 4C 00 
+// parsed: offset 306, len 49: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 68 65 63 6B 5F 63 61 73 74 2F 64 2F 54 5F 63 68 65 63 6B 5F 63 61 73 74 5F 39 3B 00 
+// parsed: offset 355, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 375, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 395, len 21: TYPE_STRING_DATA_ITEM [5] "T_check_cast_9.java"
+    13 54 5F 63 68 65 63 6B 5F 63 61 73 74 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 416, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 419, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/check_cast/d/T_check_cast_9;"
+    // parsed: offset 424, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 425, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 426, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 427, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 429, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 432, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 434, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 435, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 436, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 438, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 440, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 444, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 456, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 468, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 480, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 492, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 504, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 516, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 528, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 540, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 552, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 20 00 00 01 00 00 00 A8 01 00 00 
+    // parsed: offset 564, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 440 (0x0001b8)
+        00 10 00 00 01 00 00 00 B8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/Test_cmp_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/Test_cmp_long.java
new file mode 100644
index 0000000..e2a1994
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/Test_cmp_long.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmp_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmp_long.d.T_cmp_long_1;
+import dot.junit.opcodes.cmp_long.d.T_cmp_long_2;
+
+public class Test_cmp_long extends DxTestCase {
+    /**
+     * @title Arguments = 111234567891l > 111234567890l
+     */
+    public void testN1() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(1, t.run(111234567891l, 111234567890l));
+    }
+
+    /**
+     * @title Arguments = 112234567890 = 112234567890
+     */
+    public void testN2() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(0, t.run(112234567890l, 112234567890l));
+    }
+
+    /**
+     * @title Arguments = 112234567890 < 998876543210
+     */
+    public void testN3() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(-1, t.run(112234567890l, 998876543210l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this comparison of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+         T_cmp_long_2 t = new T_cmp_long_2();
+        try {
+            t.run(123l, 3.145f);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = Long.MAX_VALUE > Long.MIN_VALUE
+     */
+    public void testB1() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(1, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE < Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(-1, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1 > 0
+     */
+    public void testB3() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(1, t.run(1l, 0l));
+    }
+
+    /**
+     * @title Arguments = 0 > -1
+     */
+    public void testB4() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(1, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = -1 < 0
+     */
+    public void testB5() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(-1, t.run(-1l, 0l));
+    }
+
+    /**
+     * @title Arguments = 0 = 0
+     */
+    public void testB6() {
+        T_cmp_long_1 t = new T_cmp_long_1();
+        assertEquals(0, t.run(0l, 0l));
+    }
+
+
+    /**
+     * @constraint B1
+     * @title types of arguments - float, long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmp_long.d.T_cmp_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.cmp_long.d.T_cmp_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmp_long.d.T_cmp_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmp_long.d.T_cmp_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.d
new file mode 100644
index 0000000..60b9654
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_cmp_long_1.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.java
new file mode 100644
index 0000000..10a78e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmp_long.d;
+
+public class T_cmp_long_1 {
+
+    public int run(long a, long b) {
+        if (a > b)   return 1;
+        if (a == b)  return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.d
new file mode 100644
index 0000000..e3bdfd4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_cmp_long_2.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)I
+.limit regs 14
+
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.java
new file mode 100644
index 0000000..4674e7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmp_long.d;
+
+public class T_cmp_long_2 {
+
+    public int run(long a, double b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.d
new file mode 100644
index 0000000..3d25d6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_cmp_long_3.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       const v10, 3.1415
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.d
new file mode 100644
index 0000000..32c3050
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_cmp_long_4.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       const v10, 1234
+       cmp-long v0, v10, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.d
new file mode 100644
index 0000000..9e86284
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_cmp_long_5.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       const v10, 1234
+       cmp-long v0, v9, v12
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.d
new file mode 100644
index 0000000..15ac1cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmp_long/d/T_cmp_long_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_cmp_long_6.java
+.class public dot.junit.opcodes.cmp_long.d.T_cmp_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)I
+.limit regs 14
+
+       cmp-long v0, v10, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/Test_cmpg_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/Test_cmpg_double.java
new file mode 100644
index 0000000..fbf47a3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/Test_cmpg_double.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmpg_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmpg_double.d.T_cmpg_double_1;
+import dot.junit.opcodes.cmpg_double.d.T_cmpg_double_3;
+
+public class Test_cmpg_double extends DxTestCase {
+    /**
+     * @title Arguments = 3.14d, 2.7d
+     */
+    public void testN1() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(1, t.run(3.14d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, 2.7d
+     */
+    public void testN2() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(-1, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(0, t.run(3.14d, 3.14d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this comparison of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_cmpg_double_3 t = new T_cmpg_double_3();
+        try {
+            t.run(123l, 3.145d);
+        } catch (Throwable e) {
+        }
+    }  
+
+    /**
+     * @title Arguments = Double.NaN, Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(1, t.run(Double.NaN, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB2() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Double.NEGATIVE_INFINITY, Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(-1, t.run(Double.NEGATIVE_INFINITY, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_cmpg_double_1 t = new T_cmpg_double_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_double.d.T_cmpg_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_double.d.T_cmpg_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_double.d.T_cmpg_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_double.d.T_cmpg_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.d
new file mode 100644
index 0000000..a76c3b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpg_double_1.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       cmpg-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.java
new file mode 100644
index 0000000..8488914
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmpg_double.d;
+
+public class T_cmpg_double_1 {
+
+    public int run(double a, double b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.d
new file mode 100644
index 0000000..5704511
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpg_double_2.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       const v14, 3.14
+       cmpg-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.d
new file mode 100644
index 0000000..78d65ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpg_double_3.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)I
+.limit regs 16
+
+       cmpg-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.java
new file mode 100644
index 0000000..d5b8ca5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmpg_double.d;
+
+public class T_cmpg_double_3 {
+
+    public int run(long a, double b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.d
new file mode 100644
index 0000000..e38307c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpg_double_4.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       const-wide v12, 12356
+       cmpg-double v0, v12, v11
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.d
new file mode 100644
index 0000000..bd43151
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpg_double_5.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       cmpg-double v0, v12, v16
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.d
new file mode 100644
index 0000000..70c7f72
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_double/d/T_cmpg_double_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpg_double_6.java
+.class public dot.junit.opcodes.cmpg_double.d.T_cmpg_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 16
+       move v0, v14
+       move v1, v14
+       move v2, v15
+       move v3, v15
+
+       cmpg-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/Test_cmpg_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/Test_cmpg_float.java
new file mode 100644
index 0000000..1ff20a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/Test_cmpg_float.java
@@ -0,0 +1,157 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmpg_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmpg_float.d.T_cmpg_float_1;
+import dot.junit.opcodes.cmpg_float.d.T_cmpg_float_6;
+
+public class Test_cmpg_float extends DxTestCase {
+    /**
+     * @title Arguments = 3.14f, 2.7f
+     */
+    public void testN1() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(1, t.run(3.14f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, 2.7f
+     */
+    public void testN2() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(-1, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(0, t.run(3.14f, 3.14f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this comparison of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_cmpg_float_6 t = new T_cmpg_float_6();
+        try {
+            t.run(123, 3.145f);
+        } catch (Throwable e) {
+        }
+    }      
+    
+    /**
+     * @title Arguments = Float.NaN, Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(1, t.run(Float.NaN, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB2() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Float.NEGATIVE_INFINITY, Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(-1, t.run(Float.NEGATIVE_INFINITY, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_cmpg_float_1 t = new T_cmpg_float_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_float.d.T_cmpg_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_float.d.T_cmpg_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_float.d.T_cmpg_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpg_float.d.T_cmpg_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.d
new file mode 100644
index 0000000..a32772d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpg_float_1.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpg-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.java
new file mode 100644
index 0000000..9e3eb7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmpg_float.d;
+
+public class T_cmpg_float_1 {
+
+    public int run(float a, float b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.d
new file mode 100644
index 0000000..abaed4c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpg_float_2.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       const-wide v1, 3.1414
+       cmpg-float v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.d
new file mode 100644
index 0000000..f741d1e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpg_float_3.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       const-wide v1, 234234
+       cmpg-float v0, v1, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.d
new file mode 100644
index 0000000..f40f08e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpg_float_4.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpg-float v0, v6, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.d
new file mode 100644
index 0000000..46a019a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpg_float_5.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpg-float v0, v9, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.d
new file mode 100644
index 0000000..1051f14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpg_float_6.java
+.class public dot.junit.opcodes.cmpg_float.d.T_cmpg_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 9
+       cmpg-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.java
new file mode 100644
index 0000000..8a785ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpg_float/d/T_cmpg_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmpg_float.d;
+
+public class T_cmpg_float_6 {
+
+    public int run(int a, float b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/Test_cmpl_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/Test_cmpl_double.java
new file mode 100644
index 0000000..9f54c52
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/Test_cmpl_double.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmpl_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmpl_double.d.T_cmpl_double_3;
+import dot.junit.opcodes.cmpl_double.d.T_cmpl_double_1;
+
+public class Test_cmpl_double extends DxTestCase {
+    /**
+     * @title Arguments = 3.14d, 2.7d
+     */
+    public void testN1() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(1, t.run(3.14d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = -3.14d, 2.7d
+     */
+    public void testN2() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(-1, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(0, t.run(3.14d, 3.14d));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this comparison of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_cmpl_double_3 t = new T_cmpl_double_3();
+        try {
+            t.run(123l, 3.145d);
+        } catch (Throwable e) {
+        }
+    }      
+    
+    /**
+     * @title Arguments = Double.NaN, Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(-1, t.run(Double.NaN, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB2() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Double.NEGATIVE_INFINITY, Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(-1, t.run(Double.NEGATIVE_INFINITY, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_cmpl_double_1 t = new T_cmpl_double_1();
+        assertEquals(1, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_double.d.T_cmpl_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+    * @constraint A24 
+    * @title number of registers
+    */
+    public void testVFE2() {
+       try {
+           Class.forName("dot.junit.opcodes.cmpl_double.d.T_cmpl_double_5");
+           fail("expected a verification exception");
+       } catch (Throwable t) {
+           DxUtil.checkVerifyException(t);
+       }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_double.d.T_cmpl_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_double.d.T_cmpl_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.d
new file mode 100644
index 0000000..03a840e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpl_double_1.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       cmpl-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.java
new file mode 100644
index 0000000..cb1587f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmpl_double.d;
+
+public class T_cmpl_double_1 {
+
+    public int run(double a, double b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.d
new file mode 100644
index 0000000..49566ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpl_double_2.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       const v14, 3.14
+       cmpl-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.d
new file mode 100644
index 0000000..e132fa0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpl_double_3.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)I
+.limit regs 16
+
+       cmpl-double v0, v12, v14
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.java
new file mode 100644
index 0000000..5f32c2c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmpl_double.d;
+
+public class T_cmpl_double_3 {
+
+    public int run(long a, double b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.d
new file mode 100644
index 0000000..cf01f55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpl_double_4.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       const-wide v12, 12356
+       cmpl-double v0, v12, v11
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.d
new file mode 100644
index 0000000..453ee43
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpl_double_5.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)I
+.limit regs 16
+
+       cmpl-double v0, v12, v16
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.d
new file mode 100644
index 0000000..720ec7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_double/d/T_cmpl_double_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpl_double_6.java
+.class public dot.junit.opcodes.cmpl_double.d.T_cmpl_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 16
+       move v0, v14
+       move v1, v14
+       move v2, v15
+       move v3, v15
+
+       cmpl-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/Test_cmpl_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/Test_cmpl_float.java
new file mode 100644
index 0000000..3ca0b5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/Test_cmpl_float.java
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmpl_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.cmpl_float.d.T_cmpl_float_6;
+import dot.junit.opcodes.cmpl_float.d.T_cmpl_float_1;
+
+public class Test_cmpl_float extends DxTestCase {
+    /**
+     * @title Arguments = 3.14f, 2.7f
+     */
+    public void testN1() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(1, t.run(3.14f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = -3.14f, 2.7f
+     */
+    public void testN2() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(-1, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = 3.14, 3.14
+     */
+    public void testN3() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(0, t.run(3.14f, 3.14f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this comparison of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_cmpl_float_6 t = new T_cmpl_float_6();
+        try {
+            t.run(123, 3.145f);
+        } catch (Throwable e) {
+        }
+    }     
+    
+    /**
+     * @title Arguments = Float.NaN, Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(-1, t.run(Float.NaN, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = +0, -0
+     */
+    public void testB2() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(0, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Float.NEGATIVE_INFINITY, Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(-1, t.run(Float.NEGATIVE_INFINITY, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB5() {
+        T_cmpl_float_1 t = new T_cmpl_float_1();
+        assertEquals(1, t.run(Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_float.d.T_cmpl_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - long, float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_float.d.T_cmpl_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_float.d.T_cmpl_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.cmpl_float.d.T_cmpl_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.d
new file mode 100644
index 0000000..48f14e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpl_float_1.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpl-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.java
new file mode 100644
index 0000000..afd42d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_1.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmpl_float.d;
+
+public class T_cmpl_float_1 {
+
+    public int run(float a, float b) {
+        if(a > b)
+            return 1;
+        if(a == b)
+            return 0;
+        return -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.d
new file mode 100644
index 0000000..67ed903
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpl_float_2.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       const-wide v1, 3.1414
+       cmpl-float v0, v7, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.d
new file mode 100644
index 0000000..b43f114
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpl_float_3.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       const-wide v1, 234234
+       cmpl-float v0, v1, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.d
new file mode 100644
index 0000000..a4aa08e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpl_float_4.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpl-float v0, v6, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.d
new file mode 100644
index 0000000..d496c11
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpl_float_5.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 9
+       cmpl-float v0, v9, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.d
new file mode 100644
index 0000000..05a9e62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_cmpl_float_6.java
+.class public dot.junit.opcodes.cmpl_float.d.T_cmpl_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 9
+       cmpl-float v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.java
new file mode 100644
index 0000000..e41e14a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/cmpl_float/d/T_cmpl_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.cmpl_float.d;
+
+public class T_cmpl_float_6 {
+
+    public int run(int a, float b) {
+        return -2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/Test_const_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/Test_const_16.java
new file mode 100644
index 0000000..00e6b78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/Test_const_16.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_16.d.T_const_16_1;
+
+public class Test_const_16 extends DxTestCase {
+    
+    /**
+     * @title const/16 v254, -20000
+     */
+    public void testN2() {
+        T_const_16_1 t = new T_const_16_1();
+         int a = -10000;
+         int b = -10000;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_16.d.T_const_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_16.d.T_const_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.d
new file mode 100644
index 0000000..6078e06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_16_1.java
+.class public dot.junit.opcodes.const_16.d.T_const_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 255
+
+       const/16 v254, -20000
+       return v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.java
new file mode 100644
index 0000000..3285906
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_16.d;
+
+public class T_const_16_1 {
+
+    public int run() {
+        return -20000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_3.d
new file mode 100644
index 0000000..4e0bfa7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_16_3.java
+.class public dot.junit.opcodes.const_16.d.T_const_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_4.d
new file mode 100644
index 0000000..4040879
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_16/d/T_const_16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_16_4.java
+.class public dot.junit.opcodes.const_16.d.T_const_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const/16 v1, 1234
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/Test_const_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/Test_const_4.java
new file mode 100644
index 0000000..d9bb26b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/Test_const_4.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_4;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_4.d.T_const_4_1;
+
+public class Test_const_4 extends DxTestCase {
+    /**
+     * @title const/4 v15, -4
+     */
+    public void testN2() {
+        T_const_4_1 t = new T_const_4_1();
+         int a = -2;
+         int b = -2;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_4.d.T_const_4_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_4.d.T_const_4_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.d
new file mode 100644
index 0000000..77c522e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_4_1.java
+.class public dot.junit.opcodes.const_4.d.T_const_4_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 16
+
+       const/4 v15, -4
+       return v15
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.java
new file mode 100644
index 0000000..a8b8ab3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_4.d;
+
+public class T_const_4_1 {
+
+    public int run() {
+        return -4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_3.d
new file mode 100644
index 0000000..d435f16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_4_3.java
+.class public dot.junit.opcodes.const_4.d.T_const_4_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/4 v3, 1
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_4.d
new file mode 100644
index 0000000..5ca94d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_4/d/T_const_4_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_4_4.java
+.class public dot.junit.opcodes.const_4.d.T_const_4_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const/4 v1, 2
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/TestStubs.java
new file mode 100644
index 0000000..3897d2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/TestStubs.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_class;
+
+//used by testE2
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/Test_const_class.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/Test_const_class.java
new file mode 100644
index 0000000..93f5ee4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/Test_const_class.java
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_class;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_class.d.T_const_class_1;
+import dot.junit.opcodes.const_class.d.T_const_class_2;
+import dot.junit.opcodes.const_class.d.T_const_class_6;
+import dot.junit.opcodes.const_class.d.T_const_class_7;
+
+public class Test_const_class extends DxTestCase {
+    /**
+     * @title const-class v254, java/lang/String
+     */
+    public void testN1() {
+        T_const_class_1 t = new T_const_class_1();
+        Class c = t.run();
+        assertEquals(0, c.getCanonicalName().compareTo("java.lang.String"));
+    }
+    
+    /**
+     * @title const-class v254, I
+     */
+    public void testN2() {
+        T_const_class_2 t = new T_const_class_2();
+        Class c = t.run();
+        assertEquals(c.getCanonicalName(), "int");
+    }
+
+    /**
+     * @title Class definition not found
+     */
+    public void testE1() {
+        try {
+            T_const_class_6 t = new T_const_class_6();
+            t.run();
+            fail("expected a verification exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch(VerifyError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @title Class is not accessible
+     */
+    public void testE2() {
+        //@uses dot.junit.opcodes.const_class.TestStubs
+        //@uses dot.junit.opcodes.const_class.d.T_const_class_7
+        try {
+            T_const_class_7 t = new T_const_class_7();
+            t.run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_class.d.T_const_class_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_class.d.T_const_class_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A18 
+     * @title  constant pool index
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.const_class.d.T_const_class_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.d
new file mode 100644
index 0000000..6359d92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_class_1.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Class;
+.limit regs 255
+
+       const-class v254, java/lang/String
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.java
new file mode 100644
index 0000000..d95f659
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_class.d;
+
+public class T_const_class_1 {
+
+    public Class run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.d
new file mode 100644
index 0000000..39bb30e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_class_2.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Class;
+.limit regs 255
+
+       const-class v254, I
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.java
new file mode 100644
index 0000000..030d3e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_class.d;
+
+public class T_const_class_2 {
+
+    public Class run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_3.d
new file mode 100644
index 0000000..50da342
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_class_3.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-class v3, java/lang/Object
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_4.d
new file mode 100644
index 0000000..6f6b7b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_class_4.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-class v1, java/lang/Object
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.d
new file mode 100644
index 0000000..24186a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_class_5.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-class v254, java/lang/Object
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.dfh
new file mode 100644
index 0000000..db89eba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_5.dfh
@@ -0,0 +1,254 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_class/d/T_const_class_5.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_class/d/T_const_class_5.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ad464cd4
+    D4 4C 46 AD 
+// parsed: offset 12, len 20: signature           : 959c...4307
+    95 9C 6C 40 92 C8 1F 85 87 C2 86 A1 52 39 A6 87 C9 63 43 07 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "L"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 370 (0x000172) "Ljava/lang/String;"
+    72 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 390 (0x000186) "T_const_class_5.java"
+    86 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 412 (0x00019c) "V"
+    9C 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_const_class_5.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.const_class.d.T_const_class_5.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.const_class.d.T_const_class_5.run"
+    // parsed: offset 264, len 2: registers_size: 255
+        FF 00 
+    // parsed: offset 266, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: const-class v254, Ljava/lang/Object; // class@0001
+//@mod            1C FE 01 00 
+            1C FE 01 01 
+        // parsed: offset 284, len 2: |0002: return-object v254
+            11 FE 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 299, len 51: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 6F 6E 73 74 5F 63 6C 61 73 73 2F 64 2F 54 5F 63 6F 6E 73 74 5F 63 6C 61 73 73 5F 35 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 390, len 22: TYPE_STRING_DATA_ITEM [5] "T_const_class_5.java"
+    14 54 5F 63 6F 6E 73 74 5F 63 6C 61 73 73 5F 35 2E 6A 61 76 61 00 
+// parsed: offset 412, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/const_class/d/T_const_class_5;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.d
new file mode 100644
index 0000000..bd893c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_class_6.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Class;
+.limit regs 255
+
+       const-class v254, java/lang/StringNNNNN
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.java
new file mode 100644
index 0000000..4dd4ad3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_class.d;
+
+public class T_const_class_6 {
+
+    public Class run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.d
new file mode 100644
index 0000000..20d9749
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_class_7.java
+.class public dot.junit.opcodes.const_class.d.T_const_class_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Class;
+.limit regs 255
+
+       const-class v254, dot/junit/opcodes/const_class/TestStubs
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.java
new file mode 100644
index 0000000..b67d795
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_class/d/T_const_class_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_class.d;
+
+public class T_const_class_7 {
+
+    public Class run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/Test_const_high16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/Test_const_high16.java
new file mode 100644
index 0000000..68340a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/Test_const_high16.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_high16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_high16.d.T_const_high16_1;
+
+public class Test_const_high16 extends DxTestCase {
+    /**
+     * @title const/high16 v254, 0x12340000
+     */
+    public void testN1() {
+        T_const_high16_1 t = new T_const_high16_1();
+        assertEquals(0x12340000, t.run());
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_high16.d.T_const_high16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_high16.d.T_const_high16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.d
new file mode 100644
index 0000000..fcc1c2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_high16_1.java
+.class public dot.junit.opcodes.const_high16.d.T_const_high16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 255
+
+       const/high16 v254, 0x12340000
+       return v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.java
new file mode 100644
index 0000000..df8cf3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_high16.d;
+
+public class T_const_high16_1 {
+
+    public int run() {
+        return -20000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.d
new file mode 100644
index 0000000..e207c68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_high16_3.java
+.class public dot.junit.opcodes.const_high16.d.T_const_high16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/high16 v3, 0x12340000
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.d
new file mode 100644
index 0000000..f8caefa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_high16/d/T_const_high16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_high16_4.java
+.class public dot.junit.opcodes.const_high16.d.T_const_high16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const/high16 v1, 0x12340000
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/Test_const_string.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/Test_const_string.java
new file mode 100644
index 0000000..b5c778d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/Test_const_string.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_string;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_string.d.T_const_string_1;
+
+public class Test_const_string extends DxTestCase {
+    /**
+     * @title const-string v254, "android"
+     */
+    public void testN1() {
+        T_const_string_1 t = new T_const_string_1();
+        String s = t.run();
+        assertEquals(s.compareTo("android"), 0);
+        
+        String s2 = t.run();
+        assertTrue(s == s2);
+    }
+
+    /**
+     * @constraint A23
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string.d.T_const_string_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string.d.T_const_string_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A9 
+     * @title  constant pool index
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string.d.T_const_string_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.d
new file mode 100644
index 0000000..11b3770
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_string_1.java
+.class public dot.junit.opcodes.const_string.d.T_const_string_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-string v254, "android"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.java
new file mode 100644
index 0000000..0bb9508
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_string.d;
+
+public class T_const_string_1 {
+
+    public String run() {
+        return "android";
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_3.d
new file mode 100644
index 0000000..773bd80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_string_3.java
+.class public dot.junit.opcodes.const_string.d.T_const_string_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-string v3, "abc"
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_4.d
new file mode 100644
index 0000000..d8b8519
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_string_4.java
+.class public dot.junit.opcodes.const_string.d.T_const_string_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-string v1, "abc"
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.d
new file mode 100644
index 0000000..1ece763
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_string_5.java
+.class public dot.junit.opcodes.const_string.d.T_const_string_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-string v254, "android"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.dfh
new file mode 100644
index 0000000..96a95b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string/d/T_const_string_5.dfh
@@ -0,0 +1,258 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_string/d/T_const_string_5.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_string/d/T_const_string_5.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 557d54bb
+    BB 54 7D 55 
+// parsed: offset 12, len 20: signature           : ffa5...7ccb
+    FF A5 C3 77 3F 0D DA AE 41 93 96 A8 0C B7 F6 FB 04 BB 7C CB 
+// parsed: offset 32, len 4: file_size           : 576
+    40 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 452 (0x0001c4)
+    C4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 164 (0x0000a4)
+    A4 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 188 (0x0000bc)
+    BC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 332
+    4C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 244 (0x0000f4)
+    F4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "L"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 356 (0x000164) "Ljava/lang/Object;"
+    64 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 376 (0x000178) "Ljava/lang/String;"
+    78 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "T_const_string_5.java"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 419 (0x0001a3) "V"
+    A3 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 422 (0x0001a6) "android"
+    A6 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 431 (0x0001af) "run"
+    AF 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 164, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 176, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 188, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 196, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 8 (0x000008) "run"
+    00 00 00 00 08 00 00 00 
+// parsed: offset 204, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 212, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_const_string_5.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 436 (0x0001b4)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 B4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.const_string.d.T_const_string_5.<init>"
+    // parsed: offset 244, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 246, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 248, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 250, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 252, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 256, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 260, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 266, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.const_string.d.T_const_string_5.run"
+    // parsed: offset 268, len 2: registers_size: 255
+        FF 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 284, len 4: |0000: const-string v254, "android" // string@0007
+//@mod            1A FE 07 00 
+            1A FE 07 01 
+        // parsed: offset 288, len 2: |0002: return-object v254
+            11 FE 
+    // tries: 
+    // handlers: 
+// parsed: offset 290, len 2: PADDING
+    00 00 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 303, len 53: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 2F 64 2F 54 5F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 35 3B 00 
+// parsed: offset 356, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 376, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 396, len 23: TYPE_STRING_DATA_ITEM [5] "T_const_string_5.java"
+    15 54 5F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 35 2E 6A 61 76 61 00 
+// parsed: offset 419, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 422, len 9: TYPE_STRING_DATA_ITEM [7] "android"
+    07 61 6E 64 72 6F 69 64 00 
+// parsed: offset 431, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/const_string/d/T_const_string_5;"
+    // parsed: offset 436, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 437, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 438, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 439, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 440, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 441, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 444, len 2: code_off: 244 (0x0000f4)
+                F4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 446, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 447, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 448, len 2: code_off: 268 (0x00010c)
+                8C 02 
+// parsed: offset 450, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 452, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 456, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 468, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 480, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 148 (0x000094)
+        02 00 00 00 04 00 00 00 94 00 00 00 
+    // parsed: offset 492, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 164 (0x0000a4)
+        03 00 00 00 02 00 00 00 A4 00 00 00 
+    // parsed: offset 504, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 188 (0x0000bc)
+        05 00 00 00 03 00 00 00 BC 00 00 00 
+    // parsed: offset 516, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 212 (0x0000d4)
+        06 00 00 00 01 00 00 00 D4 00 00 00 
+    // parsed: offset 528, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 244 (0x0000f4)
+        01 20 00 00 02 00 00 00 F4 00 00 00 
+    // parsed: offset 540, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 292 (0x000124)
+        02 20 00 00 09 00 00 00 24 01 00 00 
+    // parsed: offset 552, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 20 00 00 01 00 00 00 B4 01 00 00 
+    // parsed: offset 564, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 452 (0x0001c4)
+        00 10 00 00 01 00 00 00 C4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/Test_const_string_jumbo.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/Test_const_string_jumbo.java
new file mode 100644
index 0000000..6234730
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/Test_const_string_jumbo.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_string_jumbo;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_1;
+
+public class Test_const_string_jumbo extends DxTestCase {
+    /**
+     * @title const-string/jumbo v254, "android jumbo"
+     */
+    public void testN1() {
+        T_const_string_jumbo_1 t = new T_const_string_jumbo_1();
+        String s = t.run();
+        assertEquals(0, s.compareTo("android jumbo"));
+        
+        String s2 = t.run();
+        assertTrue(s == s2);
+    }
+
+    /**
+     * @constraint A23
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A9 
+     * @title constant pool index
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.d
new file mode 100644
index 0000000..893baf2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_string_jumbo_1.java
+.class public dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-string/jumbo v254, "android jumbo"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.java
new file mode 100644
index 0000000..35b9b28
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_string_jumbo.d;
+
+public class T_const_string_jumbo_1 {
+
+    public String run() {
+        return "android jumbo";
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.d
new file mode 100644
index 0000000..c563141
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_string_jumbo_3.java
+.class public dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-string/jumbo v3, "abc jumbo"
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.d
new file mode 100644
index 0000000..c4088d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_string_jumbo_4.java
+.class public dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-string/jumbo v1, "abc jumbo"
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.d
new file mode 100644
index 0000000..649d3ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_string_jumbo_5.java
+.class public dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 255
+
+       const-string v254, "android jumbo"
+       return-object v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dfh
new file mode 100644
index 0000000..6ffa6a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dfh
@@ -0,0 +1,258 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 38775db4
+    B4 5D 77 38 
+// parsed: offset 12, len 20: signature           : b102...2cf6
+    B1 02 9F DE 62 D1 2A B1 06 67 17 07 84 AB F4 FF 90 21 2C F6 
+// parsed: offset 32, len 4: file_size           : 600
+    58 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 476 (0x0001dc)
+    DC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 164 (0x0000a4)
+    A4 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 188 (0x0000bc)
+    BC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 356
+    64 01 00 00 
+// parsed: offset 108, len 4: data_off            : 244 (0x0000f4)
+    F4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "L"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 368 (0x000170) "Ljava/lang/Object;"
+    70 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 388 (0x000184) "Ljava/lang/String;"
+    84 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 408 (0x000198) "T_const_string_jumbo_5.java"
+    98 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 437 (0x0001b5) "V"
+    B5 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 440 (0x0001b8) "android jumbo"
+    B8 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 455 (0x0001c7) "run"
+    C7 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 164, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 176, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 188, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 196, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 8 (0x000008) "run"
+    00 00 00 00 08 00 00 00 
+// parsed: offset 204, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 212, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_const_string_jumbo_5.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 460 (0x0001cc)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 CC 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_5.<init>"
+    // parsed: offset 244, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 246, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 248, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 250, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 252, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 256, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 260, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 266, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.const_string_jumbo.d.T_const_string_jumbo_5.run"
+    // parsed: offset 268, len 2: registers_size: 255
+        FF 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 284, len 4: |0000: const-string v254, "android jumbo" // string@0007
+//@mod            1A FE 07 00 
+            1A FE 07 01 
+        // parsed: offset 288, len 2: |0002: return-object v254
+            11 FE 
+    // tries: 
+    // handlers: 
+// parsed: offset 290, len 2: PADDING
+    00 00 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 303, len 65: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+    3F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 6A 75 6D 62 6F 2F 64 2F 54 5F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 6A 75 6D 62 6F 5F 35 3B 00 
+// parsed: offset 368, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 388, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 408, len 29: TYPE_STRING_DATA_ITEM [5] "T_const_string_jumbo_5.java"
+    1B 54 5F 63 6F 6E 73 74 5F 73 74 72 69 6E 67 5F 6A 75 6D 62 6F 5F 35 2E 6A 61 76 61 00 
+// parsed: offset 437, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 440, len 15: TYPE_STRING_DATA_ITEM [7] "android jumbo"
+    0D 61 6E 64 72 6F 69 64 20 6A 75 6D 62 6F 00 
+// parsed: offset 455, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/const_string_jumbo/d/T_const_string_jumbo_5;"
+    // parsed: offset 460, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 461, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 462, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 463, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 464, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 465, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 468, len 2: code_off: 244 (0x0000f4)
+                F4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 470, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 471, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 472, len 2: code_off: 268 (0x00010c)
+                8C 02 
+// parsed: offset 474, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 476, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 480, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 492, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 504, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 148 (0x000094)
+        02 00 00 00 04 00 00 00 94 00 00 00 
+    // parsed: offset 516, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 164 (0x0000a4)
+        03 00 00 00 02 00 00 00 A4 00 00 00 
+    // parsed: offset 528, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 188 (0x0000bc)
+        05 00 00 00 03 00 00 00 BC 00 00 00 
+    // parsed: offset 540, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 212 (0x0000d4)
+        06 00 00 00 01 00 00 00 D4 00 00 00 
+    // parsed: offset 552, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 244 (0x0000f4)
+        01 20 00 00 02 00 00 00 F4 00 00 00 
+    // parsed: offset 564, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 292 (0x000124)
+        02 20 00 00 09 00 00 00 24 01 00 00 
+    // parsed: offset 576, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 460 (0x0001cc)
+        00 20 00 00 01 00 00 00 CC 01 00 00 
+    // parsed: offset 588, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 476 (0x0001dc)
+        00 10 00 00 01 00 00 00 DC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/Test_const_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/Test_const_wide.java
new file mode 100644
index 0000000..1ce3caa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/Test_const_wide.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_wide.d.T_const_wide_1;
+import dot.junit.opcodes.const_wide.d.T_const_wide_2;
+
+public class Test_const_wide extends DxTestCase {
+    /**
+     * @title const-wide v1, 1.2345678901232324E51
+     */
+    public void testN1() {
+        T_const_wide_1 t = new T_const_wide_1();
+        double a = 1234567890123232323232232323232323232323232323456788d;
+        double b = 1d;
+        assertEquals(a + b, t.run(), 0d);
+    }
+    
+    /**
+     * @title const-wide v253, 20000000000
+     */
+    public void testN2() {
+        T_const_wide_2 t = new T_const_wide_2();
+         long a = 10000000000l;
+         long b = 10000000000l;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A24
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide.d.T_const_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide.d.T_const_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.d
new file mode 100644
index 0000000..6809530
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_wide_1.java
+.class public dot.junit.opcodes.const_wide.d.T_const_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 3
+
+       const-wide v1, 1.2345678901232324E51
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.java
new file mode 100644
index 0000000..b219a93
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_wide.d;
+
+public class T_const_wide_1 {
+    
+    public double run(){
+        return 1.54d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.d
new file mode 100644
index 0000000..b2ddede
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_wide_2.java
+.class public dot.junit.opcodes.const_wide.d.T_const_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 255
+
+       const-wide v253, 20000000000
+       return-wide v253
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.java
new file mode 100644
index 0000000..0c9c438
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_wide.d;
+
+public class T_const_wide_2 {
+
+    public long run() {
+        return 20000000000l;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.d
new file mode 100644
index 0000000..1fab9ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_wide_3.java
+.class public dot.junit.opcodes.const_wide.d.T_const_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.d
new file mode 100644
index 0000000..9493e94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide/d/T_const_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_wide_4.java
+.class public dot.junit.opcodes.const_wide.d.T_const_wide_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-wide v1, 3456
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/Test_const_wide_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/Test_const_wide_16.java
new file mode 100644
index 0000000..941b00d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/Test_const_wide_16.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_wide_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_wide_16.d.T_const_wide_16_1;
+
+public class Test_const_wide_16 extends DxTestCase {
+
+    /**
+     * @title const-wide/16 v253, 20000
+     */
+    public void testN1() {
+        T_const_wide_16_1 t = new T_const_wide_16_1();
+         long a = 10000l;
+         long b = 10000l;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A24
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_16.d.T_const_wide_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_16.d.T_const_wide_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.d
new file mode 100644
index 0000000..02c4e1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_wide_16_1.java
+.class public dot.junit.opcodes.const_wide_16.d.T_const_wide_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 255
+
+       const-wide/16 v253, 20000
+       return-wide v253
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.java
new file mode 100644
index 0000000..708bf83
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_wide_16.d;
+
+public class T_const_wide_16_1 {
+    
+    public long run(){
+        return 0l;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.d
new file mode 100644
index 0000000..eebf570
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_wide_16_3.java
+.class public dot.junit.opcodes.const_wide_16.d.T_const_wide_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide/16 v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.d
new file mode 100644
index 0000000..c1d79b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_16/d/T_const_wide_16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_wide_16_4.java
+.class public dot.junit.opcodes.const_wide_16.d.T_const_wide_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-wide/16 v1, 3456
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/Test_const_wide_32.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/Test_const_wide_32.java
new file mode 100644
index 0000000..0847b3b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/Test_const_wide_32.java
@@ -0,0 +1,62 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_wide_32;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_wide_32.d.T_const_wide_32_1;
+
+public class Test_const_wide_32 extends DxTestCase {
+    /**
+     * @title const-wide/32 v253, 20000000
+     */
+    public void testN1() {
+        T_const_wide_32_1 t = new T_const_wide_32_1();
+         long a = 10000000l;
+         long b = 10000000l;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_32.d.T_const_wide_32_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_32.d.T_const_wide_32_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.d
new file mode 100644
index 0000000..1962b17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_wide_32_1.java
+.class public dot.junit.opcodes.const_wide_32.d.T_const_wide_32_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 255
+
+       const-wide/32 v253, 20000000
+       return-wide v253
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.java
new file mode 100644
index 0000000..38be11f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_wide_32.d;
+
+public class T_const_wide_32_1 {
+    
+    public long run(){
+        return 0l;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.d
new file mode 100644
index 0000000..44821ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_wide_32_3.java
+.class public dot.junit.opcodes.const_wide_32.d.T_const_wide_32_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide/32 v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.d
new file mode 100644
index 0000000..afae8dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_32/d/T_const_wide_32_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_wide_32_4.java
+.class public dot.junit.opcodes.const_wide_32.d.T_const_wide_32_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-wide/32 v1, 3456
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/Test_const_wide_high16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/Test_const_wide_high16.java
new file mode 100644
index 0000000..2dd3e32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/Test_const_wide_high16.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_wide_high16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_1;
+
+public class Test_const_wide_high16 extends DxTestCase {
+    /**
+     * @title const-wide/high16 v252, 0x1234000000000000
+     */
+    public void testN2() {
+        T_const_wide_high16_1 t = new T_const_wide_high16_1();
+        assertEquals(0x1234000000000000l, t.run());
+    }
+
+    /**
+     * @constraint A24
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11
+     * @title  When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.d
new file mode 100644
index 0000000..c051462
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_const_wide_high16_1.java
+.class public dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 255
+
+       const-wide/high16 v252, 0x1234000000000000
+       return-wide v252
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.java
new file mode 100644
index 0000000..8a06f17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.const_wide_high16.d;
+
+public class T_const_wide_high16_1 {
+
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.d
new file mode 100644
index 0000000..24a577c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_wide_high16_3.java
+.class public dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide/high16 v3, 0x1234000000000000
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.d
new file mode 100644
index 0000000..614e5a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/const_wide_high16/d/T_const_wide_high16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_const_wide_high16_4.java
+.class public dot.junit.opcodes.const_wide_high16.d.T_const_wide_high16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const-wide/high16 v1, 0x1234000000000000
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/Test_div_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/Test_div_double.java
new file mode 100644
index 0000000..5ce7889
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/Test_div_double.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_double.d.T_div_double_1;
+import dot.junit.opcodes.div_double.d.T_div_double_3;
+
+public class Test_div_double extends DxTestCase {
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(0.8598726114649682d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this division of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_div_double_3 t = new T_div_double_3();
+        try {
+            t.run(3.14d, 12345l);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(0d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(-0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_div_double_1 t = new T_div_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.MAX_VALUE, -1E-9f));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double.d.T_div_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double.d.T_div_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double / reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double.d.T_div_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double.d.T_div_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.d
new file mode 100644
index 0000000..359ec34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_double_1.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.java
new file mode 100644
index 0000000..734f130
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_double.d;
+
+public class T_div_double_1 {
+
+    public double run(double a, double b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_2.d
new file mode 100644
index 0000000..e09176a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_double_2.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       const v10, 3.1415
+       div-double v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.d
new file mode 100644
index 0000000..02d7929
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_double_3.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DJ)D
+.limit regs 14
+
+       div-double v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.java
new file mode 100644
index 0000000..0cad5bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_double.d;
+
+public class T_div_double_3 {
+
+    public double run(double a, long b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_4.d
new file mode 100644
index 0000000..411b01a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_double_4.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double v0, v9, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_5.d
new file mode 100644
index 0000000..2675538
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_double_5.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double v0, v10, v14
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_6.d
new file mode 100644
index 0000000..9ef0732
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double/d/T_div_double_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_div_double_6.java
+.class public dot.junit.opcodes.div_double.d.T_div_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 14
+       move v0, v12
+       move v1, v12
+       move v2, v13
+       move v3, v13
+       div-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/Test_div_double_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/Test_div_double_2addr.java
new file mode 100644
index 0000000..42332e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/Test_div_double_2addr.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_1;
+import dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_3;
+
+public class Test_div_double_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(0.8598726114649682d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(-1.162962962962963d, t.run(-3.14d, 2.7d));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this division of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_div_double_2addr_3 t = new T_div_double_2addr_3();
+        try {
+            t.run(3.14d, 12345l);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(0d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(-0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_div_double_2addr_1 t = new T_div_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.MAX_VALUE, -1E-9f));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double / reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int / int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.d
new file mode 100644
index 0000000..541526e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_double_2addr_1.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.java
new file mode 100644
index 0000000..e853239
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_double_2addr.d;
+
+public class T_div_double_2addr_1 {
+
+    public double run(double a, double b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.d
new file mode 100644
index 0000000..5921ceb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_double_2addr_2.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       const v0, 3.1415
+       div-double/2addr v0, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.d
new file mode 100644
index 0000000..840ea8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_double_2addr_3.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DJ)D
+.limit regs 14
+
+       div-double/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.java
new file mode 100644
index 0000000..96d1e60
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_double_2addr.d;
+
+public class T_div_double_2addr_3 {
+
+    public double run(double a, long b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.d
new file mode 100644
index 0000000..5cee125
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_double_2addr_4.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double/2addr v9, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.d
new file mode 100644
index 0000000..2ef12c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_double_2addr_5.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       div-double/2addr v10, v14
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.d
new file mode 100644
index 0000000..05fc08e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_double_2addr/d/T_div_double_2addr_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_div_double_2addr_6.java
+.class public dot.junit.opcodes.div_double_2addr.d.T_div_double_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 14
+       move v0, v12
+       move v1, v12
+       move v2, v13
+       move v3, v13
+       div-double/2addr v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/Test_div_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/Test_div_float.java
new file mode 100644
index 0000000..8671505
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/Test_div_float.java
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_float.d.T_div_float_1;
+import dot.junit.opcodes.div_float.d.T_div_float_5;
+
+public class Test_div_float extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(0.8598726f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(-1.162963f, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_div_float_5 t = new T_div_float_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(0f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(-0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_div_float_1 t = new T_div_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float.d.T_div_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long / float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float.d.T_div_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float.d.T_div_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float.d.T_div_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.d
new file mode 100644
index 0000000..5d59692
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_float_1.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       div-float v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.java
new file mode 100644
index 0000000..b75e42b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_float.d;
+
+public class T_div_float_1 {
+
+    public float run(float a, float b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_2.d
new file mode 100644
index 0000000..4a82c48
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_float_2.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       const-wide v0, 3.14
+       div-float v0, v0, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_3.d
new file mode 100644
index 0000000..9a8b28b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_float_3.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       const-wide v0, 1234
+       div-float v0, v7, v0
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_4.d
new file mode 100644
index 0000000..ed7b149
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_float_4.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       div-float v0, v5, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.d
new file mode 100644
index 0000000..4602631
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_float_5.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 8
+       div-float v0, v6, v7
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.java
new file mode 100644
index 0000000..68d16fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_float.d;
+
+public class T_div_float_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_6.d
new file mode 100644
index 0000000..4777687
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float/d/T_div_float_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_float_6.java
+.class public dot.junit.opcodes.div_float.d.T_div_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       div-float v0, v6, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/Test_div_float_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/Test_div_float_2addr.java
new file mode 100644
index 0000000..3fdeb70
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/Test_div_float_2addr.java
@@ -0,0 +1,191 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_1;
+import dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_5;
+
+public class Test_div_float_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(0.8598726f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(-1.162963f, t.run(-3.14f, 2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_div_float_2addr_5 t = new T_div_float_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(0f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(-0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_div_float_2addr_1 t = new T_div_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.d
new file mode 100644
index 0000000..93362fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_float_2addr_1.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       div-float/2addr v6, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.java
new file mode 100644
index 0000000..bfa9c61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_float_2addr.d;
+
+public class T_div_float_2addr_1 {
+
+    public float run(float a, float b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.d
new file mode 100644
index 0000000..90ea869
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_float_2addr_2.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       const-wide v0, 3.14
+       div-float/2addr v0, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.d
new file mode 100644
index 0000000..f9bddfd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_float_2addr_3.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       const-wide v0, 1234
+       div-float/2addr v7, v0
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.d
new file mode 100644
index 0000000..377cda1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_float_2addr_4.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       div-float/2addr v5, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.d
new file mode 100644
index 0000000..2f5a998
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_float_2addr_5.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 8
+       div-float/2addr v6, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.java
new file mode 100644
index 0000000..fe4a948
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_float_2addr.d;
+
+public class T_div_float_2addr_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.d
new file mode 100644
index 0000000..ed354e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_float_2addr/d/T_div_float_2addr_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_div_float_2addr_6.java
+.class public dot.junit.opcodes.div_float_2addr.d.T_div_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+       div-float/2addr v6, v8
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/Test_div_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/Test_div_int.java
new file mode 100644
index 0000000..14614a6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/Test_div_int.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_int.d.T_div_int_1;
+import dot.junit.opcodes.div_int.d.T_div_int_5;
+
+public class Test_div_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(2, t.run(8, 4));
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(268435455, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(-3, t.run(-10, 3));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(-357913941, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(5965, t.run(-17895697, -3000));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_div_int_5 t = new T_div_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }  
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_div_int_1 t = new T_div_int_1();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_div_int_1 t = new T_div_int_1();
+        //fail("why this test causes floating point exception?");
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(0, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_int_1 t = new T_div_int_1();
+        assertEquals(0, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_int_1 t = new T_div_int_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int.d.T_div_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int.d.T_div_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int.d.T_div_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int.d.T_div_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.d
new file mode 100644
index 0000000..aaaf0a3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_1.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.java
new file mode 100644
index 0000000..b43738d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int.d;
+
+public class T_div_int_1 {
+
+    public int run(int a, int b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_2.d
new file mode 100644
index 0000000..8fb324c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_2.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v1, 3.1415
+       div-int v0, v3, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_3.d
new file mode 100644
index 0000000..446cc2c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_3.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v1, 31415
+       div-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_4.d
new file mode 100644
index 0000000..c476934
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_4.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.d
new file mode 100644
index 0000000..ad4c79c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_5.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+
+       div-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.java
new file mode 100644
index 0000000..21ba362
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int.d;
+
+public class T_div_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_6.d
new file mode 100644
index 0000000..6da816d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int/d/T_div_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_6.java
+.class public dot.junit.opcodes.div_int.d.T_div_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/Test_div_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/Test_div_int_2addr.java
new file mode 100644
index 0000000..276c840
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/Test_div_int_2addr.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_1;
+import dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_5;
+
+public class Test_div_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(2, t.run(8, 4));
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(268435455, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(-3, t.run(-10, 3));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(-357913941, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(5965, t.run(-17895697, -3000));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_div_int_2addr_5 t = new T_div_int_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(0, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        assertEquals(0, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_int_2addr_1 t = new T_div_int_2addr_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.d
new file mode 100644
index 0000000..00b88e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_2addr_1.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.java
new file mode 100644
index 0000000..67464ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_2addr.d;
+
+public class T_div_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a/b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.d
new file mode 100644
index 0000000..10e15fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_2addr_2.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 3.1415
+       div-int/2addr v3, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.d
new file mode 100644
index 0000000..483865e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_2addr_3.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 323231415
+       div-int/2addr v3, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.d
new file mode 100644
index 0000000..fbda213
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_2addr_4.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int/2addr v1, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.d
new file mode 100644
index 0000000..2ee42a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_2addr_5.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+
+       div-int/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.java
new file mode 100644
index 0000000..f206f22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_2addr.d;
+
+public class T_div_int_2addr_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.d
new file mode 100644
index 0000000..7742df6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_2addr/d/T_div_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_2addr_6.java
+.class public dot.junit.opcodes.div_int_2addr.d.T_div_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       div-int/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/Test_div_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/Test_div_int_lit16.java
new file mode 100644
index 0000000..02cc14a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/Test_div_int_lit16.java
@@ -0,0 +1,214 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_1;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_10;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_11;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_12;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_13;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_17;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_2;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_3;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_4;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_5;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_6;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_7;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_8;
+import dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_9;
+
+
+public class Test_div_int_lit16 extends DxTestCase {
+    /**
+     * @title Arguments = 8 / 4
+     */
+    public void testN1() {
+        T_div_int_lit16_1 t = new T_div_int_lit16_1();
+        assertEquals(2, t.run());
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_int_lit16_2 t = new T_div_int_lit16_2();
+        assertEquals(268435455, t.run());
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_int_lit16_3 t = new T_div_int_lit16_3();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_int_lit16_4 t = new T_div_int_lit16_4();
+        assertEquals(-3, t.run());
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_int_lit16_5 t = new T_div_int_lit16_5();
+        assertEquals(-357913941, t.run());
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_int_lit16_6 t = new T_div_int_lit16_6();
+        assertEquals(5965, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_div_int_lit16_17 t = new T_div_int_lit16_17();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / -1
+     */
+    public void testB1() {
+        T_div_int_lit16_7 t = new T_div_int_lit16_7();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / 1
+     */
+    public void testB2() {
+        T_div_int_lit16_8 t = new T_div_int_lit16_8();
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE / 1
+     */
+    public void testB3() {
+        T_div_int_lit16_9 t = new T_div_int_lit16_9();
+        assertEquals(Integer.MAX_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / Short.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_int_lit16_10 t = new T_div_int_lit16_10();
+        assertEquals(-65538, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 / Short.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_int_lit16_11 t = new T_div_int_lit16_11();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 / Short.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_int_lit16_12 t = new T_div_int_lit16_12();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_int_lit16_13 t = new T_div_int_lit16_13();
+        try {
+            t.run();
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.d
new file mode 100644
index 0000000..6b57fb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_1.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 8
+       div-int/lit16 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.java
new file mode 100644
index 0000000..3a1df06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_1 {
+
+    public int run() {
+        return 8 / 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.d
new file mode 100644
index 0000000..d665855
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_10.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit16 v0, v2, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.java
new file mode 100644
index 0000000..46925a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_10 {
+
+    public int run() {
+        return Integer.MIN_VALUE / Short.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.d
new file mode 100644
index 0000000..9f6cd95
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_11.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit16 v0, v2, 32767
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.java
new file mode 100644
index 0000000..b0b3e69
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_11 {
+
+    public int run() {
+        return 1 / Short.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.d
new file mode 100644
index 0000000..e99957a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_12.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit16 v0, v2, -32768
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.java
new file mode 100644
index 0000000..be1428e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_12 {
+
+    public int run() {
+        return 1 / Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.d
new file mode 100644
index 0000000..4115385
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_13.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit16 v0, v2, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.java
new file mode 100644
index 0000000..bbbab37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_13 {
+
+    public int run() {
+        return 1 / 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.d
new file mode 100644
index 0000000..3731d36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_14.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_14.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v1, 31415
+       div-int/lit16 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.d
new file mode 100644
index 0000000..27fba6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_15.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_15.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v1, 3.1415
+       div-int/lit16 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.d
new file mode 100644
index 0000000..6caadaf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_16.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       div-int/lit16 v1, v3, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.d
new file mode 100644
index 0000000..b60a81d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_17.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+
+       div-int/lit16 v0, v3, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.java
new file mode 100644
index 0000000..71cee9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_17 {
+
+    public int run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.d
new file mode 100644
index 0000000..6215666
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_18.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       div-int/lit16 v0, v4, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.d
new file mode 100644
index 0000000..dd4e3f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_2.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1073741823
+       div-int/lit16 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.java
new file mode 100644
index 0000000..10a63dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_2 {
+
+    public int run() {
+        return 1073741823 / 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.d
new file mode 100644
index 0000000..b3b4713
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_3.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 0
+       div-int/lit16 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.java
new file mode 100644
index 0000000..ad3d6d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_3 {
+
+    public int run() {
+        return 0 / 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.d
new file mode 100644
index 0000000..e131fc4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_4.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -10
+       div-int/lit16 v0, v2, 3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.java
new file mode 100644
index 0000000..cbf7f0b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_4 {
+
+    public int run() {
+        return -10 / 3;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.d
new file mode 100644
index 0000000..b61badf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_5.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1073741824
+       div-int/lit16 v0, v2, -3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.java
new file mode 100644
index 0000000..3a1d497
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_5 {
+
+    public int run() {
+        return 1073741824 / -3;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.d
new file mode 100644
index 0000000..c97edff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_6.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -17895697
+       div-int/lit16 v0, v2, -3000
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.java
new file mode 100644
index 0000000..7875953
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_6 {
+
+    public int run() {
+        return -17895697 / -3000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.d
new file mode 100644
index 0000000..66cc917
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_7.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit16 v0, v2, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.java
new file mode 100644
index 0000000..3fa111c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_7 {
+
+    public int run() {
+        return Integer.MIN_VALUE / -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.d
new file mode 100644
index 0000000..6f2fd00
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_8.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit16 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.java
new file mode 100644
index 0000000..3389e8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_8 {
+
+    public int run() {
+        return Integer.MIN_VALUE / 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.d
new file mode 100644
index 0000000..68f757e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit16_9.java
+.class public dot.junit.opcodes.div_int_lit16.d.T_div_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 2147483647
+       div-int/lit16 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.java
new file mode 100644
index 0000000..bf34419
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit16/d/T_div_int_lit16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit16.d;
+
+public class T_div_int_lit16_9 {
+
+    public int run() {
+        return Integer.MAX_VALUE / 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/Test_div_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/Test_div_int_lit8.java
new file mode 100644
index 0000000..e2c4057
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/Test_div_int_lit8.java
@@ -0,0 +1,213 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_17;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_1;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_10;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_11;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_12;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_13;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_2;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_3;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_4;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_5;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_6;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_7;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_8;
+import dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_9;
+
+public class Test_div_int_lit8 extends DxTestCase {
+     /**
+     * @title Arguments = 8 / 4
+     */
+    public void testN1() {
+        T_div_int_lit8_1 t = new T_div_int_lit8_1();
+        assertEquals(2, t.run());
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_int_lit8_2 t = new T_div_int_lit8_2();
+        assertEquals(268435455, t.run());
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_int_lit8_3 t = new T_div_int_lit8_3();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_int_lit8_4 t = new T_div_int_lit8_4();
+        assertEquals(-3, t.run());
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_int_lit8_5 t = new T_div_int_lit8_5();
+        assertEquals(-357913941, t.run());
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_int_lit8_6 t = new T_div_int_lit8_6();
+        assertEquals(596523, t.run());
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this division of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_div_int_lit8_17 t = new T_div_int_lit8_17();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / -1
+     */
+    public void testB1() {
+        T_div_int_lit8_7 t = new T_div_int_lit8_7();
+        // result is MIN_VALUE because overflow occurs in this case
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / 1
+     */
+    public void testB2() {
+        T_div_int_lit8_8 t = new T_div_int_lit8_8();
+        assertEquals(Integer.MIN_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE / 1
+     */
+    public void testB3() {
+        T_div_int_lit8_9 t = new T_div_int_lit8_9();
+        assertEquals(Integer.MAX_VALUE, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE / Byte.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_int_lit8_10 t = new T_div_int_lit8_10();
+        assertEquals(-16909320, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 / Byte.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_int_lit8_11 t = new T_div_int_lit8_11();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 / Byte.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_int_lit8_12 t = new T_div_int_lit8_12();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_int_lit8_13 t = new T_div_int_lit8_13();
+        try {
+            t.run();
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long / int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.d
new file mode 100644
index 0000000..4c6a389
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_1.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 8
+       div-int/lit8 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.java
new file mode 100644
index 0000000..04177b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_1 {
+
+    public int run() {
+        return 8 / 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.d
new file mode 100644
index 0000000..25c0e77
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_10.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit8 v0, v2, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.java
new file mode 100644
index 0000000..8c71346
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_10 {
+
+    public int run() {
+        return Integer.MIN_VALUE / Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.d
new file mode 100644
index 0000000..9522183
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_11.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit8 v0, v2, 127
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.java
new file mode 100644
index 0000000..9e2d7880
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_11 {
+
+    public int run() {
+        return 1 / Byte.MAX_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.d
new file mode 100644
index 0000000..cd72c52
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_12.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit8 v0, v2, -128
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.java
new file mode 100644
index 0000000..9468233
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_12 {
+
+    public int run() {
+        return 1 / Byte.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.d
new file mode 100644
index 0000000..1465ebc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_13.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1
+       div-int/lit8 v0, v2, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.java
new file mode 100644
index 0000000..2e8cbcb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_13 {
+
+    public int run() {
+        return 1 / 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.d
new file mode 100644
index 0000000..492ccbc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_14.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_14.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v1, 31415
+       div-int/lit8 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.d
new file mode 100644
index 0000000..88d70a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_15.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_15.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v1, 3.1415
+       div-int/lit8 v1, v1, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.d
new file mode 100644
index 0000000..f93542a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_16.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       div-int/lit8 v1, v3, 1
+       const v0, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.d
new file mode 100644
index 0000000..b4169d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_17.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+
+       div-int/lit8 v0, v3, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.java
new file mode 100644
index 0000000..329612d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_17.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_17 {
+
+    public int run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.d
new file mode 100644
index 0000000..10859c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_18.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       div-int/lit8 v0, v4, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.d
new file mode 100644
index 0000000..96145c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_2.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1073741823
+       div-int/lit8 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.java
new file mode 100644
index 0000000..496ac7d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_2 {
+
+    public int run() {
+        return 1073741823 / 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.d
new file mode 100644
index 0000000..a93a8b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_3.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 0
+       div-int/lit8 v0, v2, 4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.java
new file mode 100644
index 0000000..29829ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_3 {
+
+    public int run() {
+        return 0 / 4;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.d
new file mode 100644
index 0000000..458cfb1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_4.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -10
+       div-int/lit8 v0, v2, 3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.java
new file mode 100644
index 0000000..f92aed1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_4 {
+
+    public int run() {
+        return -10 / 3;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.d
new file mode 100644
index 0000000..3901a7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_5.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 1073741824
+       div-int/lit8 v0, v2, -3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.java
new file mode 100644
index 0000000..bb60183
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_5 {
+
+    public int run() {
+        return 1073741824 / -3;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.d
new file mode 100644
index 0000000..35f9c63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_6.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -17895697
+       div-int/lit8 v0, v2, -30
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.java
new file mode 100644
index 0000000..d071b33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_6 {
+
+    public int run() {
+        return -17895697 / -30;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.d
new file mode 100644
index 0000000..0d4f492
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_7.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit8 v0, v2, -1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.java
new file mode 100644
index 0000000..7f7180a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_7 {
+
+    public int run() {
+        return Integer.MIN_VALUE / -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.d
new file mode 100644
index 0000000..ee80b01
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_8.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, -2147483648
+       div-int/lit8 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.java
new file mode 100644
index 0000000..5563dd8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_8 {
+
+    public int run() {
+        return Integer.MIN_VALUE / 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.d
new file mode 100644
index 0000000..466cf0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_int_lit8_9.java
+.class public dot.junit.opcodes.div_int_lit8.d.T_div_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const v2, 2147483647
+       div-int/lit8 v0, v2, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.java
new file mode 100644
index 0000000..5c62b29
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_int_lit8/d/T_div_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_int_lit8.d;
+
+public class T_div_int_lit8_9 {
+
+    public int run() {
+        return Integer.MAX_VALUE / 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/Test_div_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/Test_div_long.java
new file mode 100644
index 0000000..b0e1d31
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/Test_div_long.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_long.d.T_div_long_1;
+import dot.junit.opcodes.div_long.d.T_div_long_2;
+
+
+public class Test_div_long extends DxTestCase {
+    /**
+     * @title Arguments = 100000000000l, 40000000000l
+     */
+    public void testN1() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(2l, t.run(100000000000l, 40000000000l));
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(8l, t.run(98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(0l, t.run(0l, 98765432123456l));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-8, t.run(-98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-8, t.run(98765432123456l, -12345678912345l));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(80l, t.run(-98765432123456l, -1234567891234l));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this division of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_div_long_2 t = new T_div_long_2();
+        try {
+            t.run(1234l, 3.1415d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(-1, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(0, t.run(1, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_long_1 t = new T_div_long_1();
+        assertEquals(0, t.run(1, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_long_1 t = new T_div_long_1();
+        try {
+            t.run(12345678912345l, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long.d.T_div_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long.d.T_div_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float / long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long.d.T_div_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long.d.T_div_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.d
new file mode 100644
index 0000000..fdf2445
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_long_1.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.java
new file mode 100644
index 0000000..783d7ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_long.d;
+
+
+public class T_div_long_1 {
+
+    public long run(long a, long b) {
+        return a/b;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.d
new file mode 100644
index 0000000..e72e2a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_long_2.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       div-long v0, v10, v12
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.java
new file mode 100644
index 0000000..e6b3456
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_long.d;
+
+
+public class T_div_long_2 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_3.d
new file mode 100644
index 0000000..6a43649
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_long_3.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v10, 1234
+       div-long v0, v10, v12
+       return-wide v12
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_4.d
new file mode 100644
index 0000000..409b45a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_long_4.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v10, 3.14
+       div-long v0, v10, v12
+       return-wide v12
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_5.d
new file mode 100644
index 0000000..648b110
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_long_5.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long v0, v9, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_6.d
new file mode 100644
index 0000000..b2a6d0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long/d/T_div_long_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_long_6.java
+.class public dot.junit.opcodes.div_long.d.T_div_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long v0, v10, v14
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/Test_div_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/Test_div_long_2addr.java
new file mode 100644
index 0000000..5ba3dad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/Test_div_long_2addr.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_1;
+import dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_2;
+
+public class Test_div_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 100000000000l, 40000000000l
+     */
+    public void testN1() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(2l, t.run(100000000000l, 40000000000l));
+    }
+
+    /**
+     * @title Rounding
+     */
+    public void testN2() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(8l, t.run(98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(0l, t.run(0l, 98765432123456l));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-8, t.run(-98765432123456l, 12345678912345l));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-8, t.run(98765432123456l, -12345678912345l));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(80l, t.run(-98765432123456l, -1234567891234l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this division of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_div_long_2addr_2 t = new T_div_long_2addr_2();
+        try {
+            t.run(1234l, 3.1415d);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(-1, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(0, t.run(1, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        assertEquals(0, t.run(1, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_div_long_2addr_1 t = new T_div_long_2addr_1();
+        try {
+            t.run(12345678912345l, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int / long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float / long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference / long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.d
new file mode 100644
index 0000000..0ae9ff3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_long_2addr_1.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.java
new file mode 100644
index 0000000..031cac2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_long_2addr.d;
+
+
+public class T_div_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a/b;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.d
new file mode 100644
index 0000000..f01fcf4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_long_2addr_2.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       div-long/2addr v10, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.java
new file mode 100644
index 0000000..674284e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.div_long_2addr.d;
+
+
+public class T_div_long_2addr_2 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.d
new file mode 100644
index 0000000..09e48c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_long_2addr_3.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v0, 1234
+       div-long/2addr v0, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.d
new file mode 100644
index 0000000..6d91919
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_div_long_2addr_4.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       const v0, 3.14
+       div-long/2addr v0, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.d
new file mode 100644
index 0000000..ed7fdfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_long_2addr_5.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long/2addr v9, v12
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.d
new file mode 100644
index 0000000..83e2b30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/div_long_2addr/d/T_div_long_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_div_long_2addr_6.java
+.class public dot.junit.opcodes.div_long_2addr.d.T_div_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       div-long/2addr v10, v14
+       return-wide v10
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/Test_double_to_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/Test_double_to_float.java
new file mode 100644
index 0000000..780ffef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/Test_double_to_float.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.double_to_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.double_to_float.d.T_double_to_float_1;
+import dot.junit.opcodes.double_to_float.d.T_double_to_float_3;
+
+public class Test_double_to_float extends DxTestCase {
+     /**
+     * @title Argument = 2.71
+     */
+    public void testN1() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(2.71f, t.run(2.71d));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(1f, t.run(1d));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(-1f, t.run(-1d));
+    }
+    
+    /**
+     * @title Type of argument - long. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of long to float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_double_to_float_3 t = new T_double_to_float_3();
+        try {
+            t.run(12345l);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Double.MIN_VALUE
+     */
+    public void testB2() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(0f, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = -0
+     */
+    public void testB3() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(-0f, t.run(-0d));
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertTrue(Float.isNaN(t.run(Double.NaN)));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertTrue(Float.isInfinite(t.run(Double.POSITIVE_INFINITY)));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertTrue(Float.isInfinite(t.run(Double.NEGATIVE_INFINITY)));
+    }
+
+
+    /**
+     * @title Argument = -Double.MIN_VALUE
+     */
+    public void testB7() {
+        T_double_to_float_1 t = new T_double_to_float_1();
+        assertEquals(-0f, t.run(-4.9E-324d));
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_float.d.T_double_to_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_float.d.T_double_to_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_float.d.T_double_to_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_float.d.T_double_to_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.d
new file mode 100644
index 0000000..24b332f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_float_1.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       double-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.java
new file mode 100644
index 0000000..c2cf023
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.double_to_float.d;
+
+public class T_double_to_float_1 {
+
+    public float run(double a) {
+        return (float)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.d
new file mode 100644
index 0000000..402cfac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_float_2.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       const v6, 3.14
+       double-to-float v0, v6
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.d
new file mode 100644
index 0000000..1cbf6f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_float_3.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       double-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.java
new file mode 100644
index 0000000..f4be401
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.double_to_float.d;
+
+public class T_double_to_float_3 {
+
+    public float run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.d
new file mode 100644
index 0000000..135e7ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_float_4.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       double-to-float v0, v5
+       
+       const v3, 3.14
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.d
new file mode 100644
index 0000000..80adf03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_float_5.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       double-to-float v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.d
new file mode 100644
index 0000000..9c65fb8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_float/d/T_double_to_float_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_float_6.java
+.class public dot.junit.opcodes.double_to_float.d.T_double_to_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 8
+
+       move v0, v7
+       move v1, v7    
+       double-to-float v0, v0
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/Test_double_to_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/Test_double_to_int.java
new file mode 100644
index 0000000..86a3cdc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/Test_double_to_int.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.double_to_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.double_to_int.d.T_double_to_int_1;
+import dot.junit.opcodes.double_to_int.d.T_double_to_int_3;
+
+
+public class Test_double_to_int extends DxTestCase {
+    /**
+     * @title Argument = 2.9999999d
+     */
+    public void testN1() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(2, t.run(2.9999999d));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(1, t.run(1d));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(-1, t.run(-1d));
+    }
+
+    /**
+     * @title Type of argument - long. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of long to int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_double_to_int_3 t = new T_double_to_int_3();
+        try {
+            t.run(12345l);
+        } catch (Throwable e) {
+        }
+    }    
+    
+    /**
+     * @title Argument = -0
+     */
+    public void testB1() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(0, t.run(-0d));
+    }
+
+    /**
+     * @title Argument = Double.MAX_VALUE
+     */
+    public void testB2() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Double.MIN_VALUE
+     */
+    public void testB3() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(0, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(0, t.run(Double.NaN));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_double_to_int_1 t = new T_double_to_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_int.d.T_double_to_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_int.d.T_double_to_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_int.d.T_double_to_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_int.d.T_double_to_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.d
new file mode 100644
index 0000000..82f2467
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_int_1.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       double-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.java
new file mode 100644
index 0000000..208a2bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.double_to_int.d;
+
+public class T_double_to_int_1 {
+
+    public int run(double a) {
+        return (int)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.d
new file mode 100644
index 0000000..7e3a98b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_int_2.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       const v6, 3.14
+       double-to-int v0, v6
+       const v1, 123
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.d
new file mode 100644
index 0000000..07f855a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_int_3.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       double-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.java
new file mode 100644
index 0000000..03e205b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.double_to_int.d;
+
+public class T_double_to_int_3 {
+
+    public int run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.d
new file mode 100644
index 0000000..1f62ffb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_int_4.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       double-to-int v0, v5
+       
+       const v3, 123
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.d
new file mode 100644
index 0000000..e4477d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_int_5.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       double-to-int v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.d
new file mode 100644
index 0000000..ecbe761
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_int/d/T_double_to_int_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_int_6.java
+.class public dot.junit.opcodes.double_to_int.d.T_double_to_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 8
+
+       move v0, v7
+       move v1, v7    
+       double-to-int v0, v0
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/Test_double_to_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/Test_double_to_long.java
new file mode 100644
index 0000000..089558e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/Test_double_to_long.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.double_to_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.double_to_long.d.T_double_to_long_1;
+import dot.junit.opcodes.double_to_long.d.T_double_to_long_3;
+
+public class Test_double_to_long extends DxTestCase {
+    /**
+     * @title Argument = 2.9999999
+     */
+    public void testN1() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(2l, t.run(2.9999999d));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(1l, t.run(1d));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(-1l, t.run(-1d));
+    }
+    
+    /**
+     * @title Type of argument - long. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of long to long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_double_to_long_3 t = new T_double_to_long_3();
+        try {
+            t.run(12345l);
+        } catch (Throwable e) {
+        }
+    }    
+
+    /**
+     * @title Argument = Double.MAX_VALUE
+     */
+    public void testB1() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Double.MIN_VALUE
+     */
+    public void testB2() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(0, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = -0
+     */
+    public void testB3() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(0l, t.run(-0));
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(0l, t.run(Double.NaN));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_double_to_long_1 t = new T_double_to_long_1();
+        assertEquals(Long.MIN_VALUE, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_long.d.T_double_to_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_long.d.T_double_to_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_long.d.T_double_to_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.double_to_long.d.T_double_to_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.d
new file mode 100644
index 0000000..677d352
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_long_1.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       double-to-long v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.java
new file mode 100644
index 0000000..11469d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.double_to_long.d;
+
+public class T_double_to_long_1 {
+
+    public long run(double a) {
+        return (long)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.d
new file mode 100644
index 0000000..54740b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_long_2.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       const v6, 3.14
+       double-to-long v0, v6
+       const-wide v2, 123
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.d
new file mode 100644
index 0000000..1f2293d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_long_3.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       const-wide v6, 32380293
+       double-to-long v0, v6
+       const-wide v2, 123
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.java
new file mode 100644
index 0000000..043a2ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.double_to_long.d;
+
+public class T_double_to_long_3 {
+
+    public long run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.d
new file mode 100644
index 0000000..df716b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_long_4.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       double-to-long v0, v5
+       
+       const-wide v2, 123
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.d
new file mode 100644
index 0000000..8b11c73
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_long_5.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       double-to-long v0, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.d
new file mode 100644
index 0000000..6aeb8fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/double_to_long/d/T_double_to_long_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_double_to_long_6.java
+.class public dot.junit.opcodes.double_to_long.d.T_double_to_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 8
+
+       move v0, v7
+       move v1, v7    
+       double-to-long v0, v0
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/Test_fill_array_data.java b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/Test_fill_array_data.java
new file mode 100644
index 0000000..5bac3cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/Test_fill_array_data.java
@@ -0,0 +1,216 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.fill_array_data;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.fill_array_data.d.T_fill_array_data_1;
+import dot.junit.opcodes.fill_array_data.d.T_fill_array_data_2;
+
+public class Test_fill_array_data extends DxTestCase {
+    /**
+     * @title array of ints
+     */
+    public void testN1() {
+        int arr[] = new int[5];
+        T_fill_array_data_1 t = new T_fill_array_data_1();
+        t.run(arr);
+        for(int i = 0; i < 5; i++)
+            assertEquals(i + 1, arr[i]);
+     }
+    
+    /**
+     * @title array of doubles
+     */
+    public void testN2() {
+        double arr[] = new double[5];
+        T_fill_array_data_2 t = new T_fill_array_data_2();
+        t.run(arr);
+        for(int i = 0; i < 5; i++)
+            assertEquals((double)(i + 1), arr[i]);
+     }
+
+    /**
+     * @title If there are less elements in the table than the array provides space for, 
+     * the remaining array elements stay untouched.  
+     */
+    public void testN3() {
+        int arr[] = new int[10];
+        T_fill_array_data_1 t = new T_fill_array_data_1();
+        t.run(arr);
+        for(int i = 0; i < 5; i++)
+            assertEquals(i + 1, arr[i]);
+        for(int i = 5; i < 10; i++)
+            assertEquals(0, arr[i]);
+     }
+    
+    /**
+     * @title expected NullPointerException  
+     */
+    public void testE1() {
+        T_fill_array_data_1 t = new T_fill_array_data_1();
+        try {
+            t.run(null);
+        } catch(NullPointerException npe) {
+            // expected
+        }
+     }
+    
+    /**
+     * @title expected ArrayIndexOutOfBoundsException  
+     */
+    public void testE2() {
+        int arr[] = new int[2];
+        T_fill_array_data_1 t = new T_fill_array_data_1();
+       try {
+            t.run(arr);
+        } catch(ArrayIndexOutOfBoundsException e) {
+            // expected
+           }
+     }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - reference (not array)
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title array of Objects
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title array type and data size shall be consistent
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title offset to table shall be inside method
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title the size and the list must be consistent. 
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B22
+     * @title packed-switch-data pseudo-instructions must not be reachable by control flow 
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title table has wrong ident code
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.fill_array_data.d.T_fill_array_data_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.d
new file mode 100644
index 0000000..1c97601
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_fill_array_data_1.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.java
new file mode 100644
index 0000000..c2a43a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.fill_array_data.d;
+
+public class T_fill_array_data_1 {
+    public void run(int[] arr) {
+        return;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.d
new file mode 100644
index 0000000..b462d1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_fill_array_data_11.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dfh
new file mode 100644
index 0000000..bed70ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dfh
@@ -0,0 +1,264 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 59eb4a7d
+    7D 4A EB 59 
+// parsed: offset 12, len 20: signature           : 083f...2af8
+    08 3F 75 AF 24 45 09 F6 52 52 56 37 0A 56 D4 2A 88 76 2A F8 
+// parsed: offset 32, len 4: file_size           : 604
+    5C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 364
+    6C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 322 (0x000142) "<init>"
+    42 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 330 (0x00014a) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+    4A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 390 (0x000186) "Ljava/lang/Object;"
+    86 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 410 (0x00019a) "T_fill_array_data_11.java"
+    9A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 437 (0x0001b5) "V"
+    B5 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 440 (0x0001b8) "VL"
+    B8 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 444 (0x0001bc) "[I"
+    BC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 448 (0x0001c0) "run"
+    C0 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "[I"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "VL"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 316 (0x00013c)
+    05 00 00 00 02 00 00 00 3C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_fill_array_data_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 453 (0x0001c5)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 C5 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_11.run"
+    // parsed: offset 264, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 18
+        12 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: fill-array-data v9, 00000004 //  +0x00000004
+            26 09 04 00 00 00 
+        // parsed: offset 286, len 2: |0003: return-void
+            0E 00 
+        // parsed: offset 288, len 28: |0004: array-data (14 units)
+//@mod            00 03 04 00 05 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+            00 03 04 00 06 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 316, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 320, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 322, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 330, len 60: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+    3A 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 2F 64 2F 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 31 31 3B 00 
+// parsed: offset 390, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 410, len 27: TYPE_STRING_DATA_ITEM [3] "T_fill_array_data_11.java"
+    19 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 437, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 440, len 4: TYPE_STRING_DATA_ITEM [5] "VL"
+    02 56 4C 00 
+// parsed: offset 444, len 4: TYPE_STRING_DATA_ITEM [6] "[I"
+    02 5B 49 00 
+// parsed: offset 448, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_11;"
+    // parsed: offset 453, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 454, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 455, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 456, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 457, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 458, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 461, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 463, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 464, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 465, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 467, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 468, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 316 (0x00013c)
+        01 10 00 00 01 00 00 00 3C 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 322 (0x000142)
+        02 20 00 00 08 00 00 00 42 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 453 (0x0001c5)
+        00 20 00 00 01 00 00 00 C5 01 00 00 
+    // parsed: offset 592, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.d
new file mode 100644
index 0000000..c3ce952
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_12.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_fill_array_data_12.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    goto Label0
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    return-void
+Label0:    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.d
new file mode 100644
index 0000000..0066d29
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_fill_array_data_13.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dfh
new file mode 100644
index 0000000..0d2fc68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dfh
@@ -0,0 +1,264 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_13.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b2054cd3
+    D3 4C 05 B2 
+// parsed: offset 12, len 20: signature           : 1649...5e25
+    16 49 CA 77 41 DC DC A0 6E 2C E0 E8 CE 58 95 B0 0B 40 5E 25 
+// parsed: offset 32, len 4: file_size           : 604
+    5C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 364
+    6C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 322 (0x000142) "<init>"
+    42 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 330 (0x00014a) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+    4A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 390 (0x000186) "Ljava/lang/Object;"
+    86 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 410 (0x00019a) "T_fill_array_data_13.java"
+    9A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 437 (0x0001b5) "V"
+    B5 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 440 (0x0001b8) "VL"
+    B8 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 444 (0x0001bc) "[I"
+    BC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 448 (0x0001c0) "run"
+    C0 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "[I"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "VL"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 316 (0x00013c)
+    05 00 00 00 02 00 00 00 3C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_fill_array_data_13.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 453 (0x0001c5)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 C5 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_13.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_13.run"
+    // parsed: offset 264, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 18
+        12 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: fill-array-data v9, 00000004 //  +0x00000004
+            26 09 04 00 00 00 
+        // parsed: offset 286, len 2: |0003: return-void
+            0E 00 
+        // parsed: offset 288, len 28: |0004: array-data (14 units)
+//@mod            00 03 04 00 05 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+            00 05 04 00 05 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 316, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 320, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 322, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 330, len 60: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+    3A 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 2F 64 2F 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 31 33 3B 00 
+// parsed: offset 390, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 410, len 27: TYPE_STRING_DATA_ITEM [3] "T_fill_array_data_13.java"
+    19 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 31 33 2E 6A 61 76 61 00 
+// parsed: offset 437, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 440, len 4: TYPE_STRING_DATA_ITEM [5] "VL"
+    02 56 4C 00 
+// parsed: offset 444, len 4: TYPE_STRING_DATA_ITEM [6] "[I"
+    02 5B 49 00 
+// parsed: offset 448, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_13;"
+    // parsed: offset 453, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 454, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 455, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 456, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 457, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 458, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 461, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 463, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 464, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 465, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 467, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 468, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 316 (0x00013c)
+        01 10 00 00 01 00 00 00 3C 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 322 (0x000142)
+        02 20 00 00 08 00 00 00 42 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 453 (0x0001c5)
+        00 20 00 00 01 00 00 00 C5 01 00 00 
+    // parsed: offset 592, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.d
new file mode 100644
index 0000000..6167ef7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 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.
+
+.source T_fill_array_data_2.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([D)V
+.limit regs 10
+
+    fill-array-data v9 D
+        1.0
+        2.0
+        3.0
+        4.0
+        5.0
+    fill-array-data-end
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.java
new file mode 100644
index 0000000..7c56ef0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.fill_array_data.d;
+
+public class T_fill_array_data_2 {
+    public void run(double[] arr) {
+        return;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.d
new file mode 100644
index 0000000..e6ecd1e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_fill_array_data_3.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v10 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.d
new file mode 100644
index 0000000..221ef8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_4.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_fill_array_data_4.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D[I)V
+.limit regs 10
+    
+    fill-array-data v7 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.d
new file mode 100644
index 0000000..cc98351
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_fill_array_data_5.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J[I)V
+.limit regs 10
+    
+    fill-array-data v7 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.d
new file mode 100644
index 0000000..61990a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_6.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_fill_array_data_6.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v8 I
+        0
+        0
+        0
+        0
+        0
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.d
new file mode 100644
index 0000000..8ba5155
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_7.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_fill_array_data_7.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([Ljava/lang/Object;)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        0
+        0
+        0
+        0
+        0
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.d
new file mode 100644
index 0000000..e90eb86
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_8.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_fill_array_data_8.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([D)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.d
new file mode 100644
index 0000000..0a5e008
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_fill_array_data_9.java
+.class public dot.junit.opcodes.fill_array_data.d.T_fill_array_data_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run([I)V
+.limit regs 10
+    
+    fill-array-data v9 I
+        1
+        2
+        3
+        4
+        5
+    fill-array-data-end
+    
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dfh
new file mode 100644
index 0000000..22cb9c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dfh
@@ -0,0 +1,264 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/fill_array_data/d/T_fill_array_data_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 29604be4
+    E4 4B 60 29 
+// parsed: offset 12, len 20: signature           : 38a2...97b7
+    38 A2 2B 55 35 C5 4B 31 51 6E 60 02 2B 76 F6 FC FF 7A 97 B7 
+// parsed: offset 32, len 4: file_size           : 604
+    5C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 364
+    6C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 322 (0x000142) "<init>"
+    42 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 330 (0x00014a) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+    4A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 389 (0x000185) "Ljava/lang/Object;"
+    85 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 409 (0x000199) "T_fill_array_data_9.java"
+    99 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 435 (0x0001b3) "V"
+    B3 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 438 (0x0001b6) "VL"
+    B6 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 442 (0x0001ba) "[I"
+    BA 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 446 (0x0001be) "run"
+    BE 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "[I"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "VL"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 316 (0x00013c)
+    05 00 00 00 02 00 00 00 3C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_fill_array_data_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 451 (0x0001c3)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 C3 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_9.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.fill_array_data.d.T_fill_array_data_9.run"
+    // parsed: offset 264, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 18
+        12 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: fill-array-data v9, 00000004 //  +0x00000004
+//@mod            26 09 04 00 00 00 
+            26 09 04 01 00 00 
+        // parsed: offset 286, len 2: |0003: return-void
+            0E 00 
+        // parsed: offset 288, len 28: |0004: array-data (14 units)
+            00 03 04 00 05 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00 04 00 00 00 05 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 316, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 320, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 322, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 330, len 59: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+    39 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 2F 64 2F 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 39 3B 00 
+// parsed: offset 389, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 409, len 26: TYPE_STRING_DATA_ITEM [3] "T_fill_array_data_9.java"
+    18 54 5F 66 69 6C 6C 5F 61 72 72 61 79 5F 64 61 74 61 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 435, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 438, len 4: TYPE_STRING_DATA_ITEM [5] "VL"
+    02 56 4C 00 
+// parsed: offset 442, len 4: TYPE_STRING_DATA_ITEM [6] "[I"
+    02 5B 49 00 
+// parsed: offset 446, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/fill_array_data/d/T_fill_array_data_9;"
+    // parsed: offset 451, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 452, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 453, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 454, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 455, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 456, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 459, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 461, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 462, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 463, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 465, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 468, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 316 (0x00013c)
+        01 10 00 00 01 00 00 00 3C 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 322 (0x000142)
+        02 20 00 00 08 00 00 00 42 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 451 (0x0001c3)
+        00 20 00 00 01 00 00 00 C3 01 00 00 
+    // parsed: offset 592, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/TestStubs.java
new file mode 100644
index 0000000..344f5c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/TestStubs.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2009 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 dot.junit.opcodes.filled_new_array;
+
+// used by T_filled_new_array_11
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/Test_filled_new_array.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/Test_filled_new_array.java
new file mode 100644
index 0000000..b17c29b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/Test_filled_new_array.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.filled_new_array;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.filled_new_array.d.T_filled_new_array_1;
+import dot.junit.opcodes.filled_new_array.d.T_filled_new_array_10;
+import dot.junit.opcodes.filled_new_array.d.T_filled_new_array_11;
+import dot.junit.opcodes.filled_new_array.d.T_filled_new_array_2;
+
+public class Test_filled_new_array extends DxTestCase {
+    /**
+     * @title array of ints
+     */
+    public void testN1() {
+        T_filled_new_array_1 t = new T_filled_new_array_1();
+        int[] arr = t.run(1, 2, 3, 4, 5);
+        assertNotNull(arr);
+        assertEquals(5, arr.length);
+        for(int i = 0; i < 5; i++)
+            assertEquals(i + 1, arr[i]);
+     }
+
+    /**
+     * @title array of objects
+     */
+    public void testN2() {
+        T_filled_new_array_2 t = new T_filled_new_array_2();
+        String s = "android";
+        Object[] arr = t.run(t, s);
+        assertNotNull(arr);
+        assertEquals(2, arr.length);
+        assertEquals(t, arr[0]);
+        assertEquals(s, arr[1]);
+    }
+
+    /**
+     * @constraint A17
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+         try {
+             Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_3");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+ 
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to pass obj ref instead of int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to pass long instead of int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to create non-array type
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title invalid arg count
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate String[] and fill it with reference to assignment-incompatible class
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array.d.T_filled_new_array_9");
+            fail("expected a verification exception"); 
+        } catch(Throwable t) { 
+            DxUtil.checkVerifyException(t);    
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate array of non-existent class
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.filled_new_array.d.T_filled_new_array_10
+        try {
+            T_filled_new_array_10 T = new T_filled_new_array_10();
+            T.run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch(NoClassDefFoundError t) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate array of inaccessible class
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.filled_new_array.d.T_filled_new_array_11
+        //@uses dot.junit.opcodes.filled_new_array.TestStubs
+        try {
+            T_filled_new_array_11 T = new T_filled_new_array_11();
+            T.run();
+            fail("expected a IllegalAccessError exception");
+        } catch(IllegalAccessError t) {
+            // expected
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.d
new file mode 100644
index 0000000..0c195eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_1.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.java
new file mode 100644
index 0000000..05cd56f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.filled_new_array.d;
+
+public class T_filled_new_array_1 {
+    public int[] run(int a, int b, int c, int d, int e) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.d
new file mode 100644
index 0000000..ccfc7d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2009 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.
+
+.source T_filled_new_array_10.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 10
+    const v9, 0
+    filled-new-array {v9}, [Ljava/lang/StringNNNNN;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.java
new file mode 100644
index 0000000..4caf263
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.filled_new_array.d;
+
+public class T_filled_new_array_10 {
+    public Object[] run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.d
new file mode 100644
index 0000000..dca1ca3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2009 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.
+
+.source T_filled_new_array_11.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 10
+    const v9, 0
+    filled-new-array {v9}, [Ldot/junit/opcodes/filled_new_array/TestStubs;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.java
new file mode 100644
index 0000000..f25d58f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_11.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.filled_new_array.d;
+
+public class T_filled_new_array_11 {
+    public Object[] run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.d
new file mode 100644
index 0000000..532158e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_2.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
+.limit regs 10
+    filled-new-array {v8, v9}, [Ljava/lang/Object;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.java
new file mode 100644
index 0000000..0edab9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.filled_new_array.d;
+
+public class T_filled_new_array_2 {
+    public Object[] run(Object a, Object b) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.d
new file mode 100644
index 0000000..69d1f79
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_3.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dfh
new file mode 100644
index 0000000..deace06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dfh
@@ -0,0 +1,280 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 5ca65099
+    99 50 A6 5C 
+// parsed: offset 12, len 20: signature           : 05d9...c8d3
+    05 D9 B4 47 7C 61 39 F5 99 31 79 2A DE 6F 88 65 3C 8D C8 D3 
+// parsed: offset 32, len 4: file_size           : 604
+    5C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 356
+    64 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "LIIIII"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 333 (0x00014d) "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+    4D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 394 (0x00018a) "Ljava/lang/Object;"
+    8A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 414 (0x00019e) "T_filled_new_array_3.java"
+    9E 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 441 (0x0001b9) "V"
+    B9 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 444 (0x0001bc) "[I"
+    BC 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 448 (0x0001c0) "run"
+    C0 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LIIIII"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 300 (0x00012c)
+    02 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_filled_new_array_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 453 (0x0001c5)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 C5 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array.d.T_filled_new_array_3.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array.d.T_filled_new_array_3.run"
+    // parsed: offset 272, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 274, len 2: ins_size: 6
+        06 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: filled-new-array {v5, v6, v7, v8, v9}, [I // class@0004
+//@mod            24 59 04 00 65 87 
+            24 59 04 01 65 87 
+        // parsed: offset 294, len 2: |0003: move-result-object v0
+            0C 00 
+        // parsed: offset 296, len 2: |0004: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 298, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 5
+        05 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+    // parsed: offset 308, len 2: type_item [2] type_idx: 0
+        00 00 
+    // parsed: offset 310, len 2: type_item [3] type_idx: 0
+        00 00 
+    // parsed: offset 312, len 2: type_item [4] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 8: TYPE_STRING_DATA_ITEM [2] "LIIIII"
+    06 4C 49 49 49 49 49 00 
+// parsed: offset 333, len 61: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+    3B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 2F 64 2F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 33 3B 00 
+// parsed: offset 394, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 414, len 27: TYPE_STRING_DATA_ITEM [5] "T_filled_new_array_3.java"
+    19 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 441, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 444, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 448, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_3;"
+    // parsed: offset 453, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 454, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 455, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 456, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 457, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 458, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 461, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 463, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 464, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 465, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 467, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 468, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 453 (0x0001c5)
+        00 20 00 00 01 00 00 00 C5 01 00 00 
+    // parsed: offset 592, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.d
new file mode 100644
index 0000000..ac6b1b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_4.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v10}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.d
new file mode 100644
index 0000000..c2702a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_5.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v4}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.d
new file mode 100644
index 0000000..6be462d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_6.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIIJ)V
+.limit regs 11
+    filled-new-array {v5, v6, v7, v8, v9}, [I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.d
new file mode 100644
index 0000000..129a800
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_7.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v9}, I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.d
new file mode 100644
index 0000000..951e06a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_8.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 10
+
+       invoke-direct {v9}, java/lang/Object/<init>()V
+       
+       const v5, 0
+       const v6, 0
+       const v7, 0
+       const v8, 0
+       const v9, 0
+       filled-new-array {v5, v6, v7, v8, v9}, [I
+       move-result-object v0
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array {v5, v6, v7, v8, v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dfh
new file mode 100644
index 0000000..343d149
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dfh
@@ -0,0 +1,297 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 5bac58f0
+    F0 58 AC 5B 
+// parsed: offset 12, len 20: signature           : d1b9...67e0
+    D1 B9 FB 64 E5 F3 AB 93 DC 90 83 01 BD F0 6C A0 7E B2 67 E0 
+// parsed: offset 32, len 4: file_size           : 644
+    84 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 508 (0x0001fc)
+    FC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 396
+    8C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 354 (0x000162) "<init>"
+    62 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 362 (0x00016a) "I"
+    6A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 365 (0x00016d) "LIIIII"
+    6D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 373 (0x000175) "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+    75 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 434 (0x0001b2) "Ljava/lang/Object;"
+    B2 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 454 (0x0001c6) "T_filled_new_array_8.java"
+    C6 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 481 (0x0001e1) "V"
+    E1 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 484 (0x0001e4) "[I"
+    E4 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 488 (0x0001e8) "run"
+    E8 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LIIIII"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 04 00 00 00 54 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_filled_new_array_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 493 (0x0001ed)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 ED 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array.d.T_filled_new_array_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 23
+        17 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v9}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 09 00 
+        // parsed: offset 270, len 6: |0003: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 276, len 6: |0006: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 282, len 6: |0009: const v7, #float 0.000000 // #0x00000000 int
+            14 07 00 00 00 00 
+        // parsed: offset 288, len 6: |000c: const v8, #float 0.000000 // #0x00000000 int
+            14 08 00 00 00 00 
+        // parsed: offset 294, len 6: |000f: const v9, #float 0.000000 // #0x00000000 int
+            14 09 00 00 00 00 
+        // parsed: offset 300, len 6: |0012: filled-new-array {v5, v6, v7, v8, v9}, [I // class@0004
+//@mod            24 59 04 00 65 87 
+            24 F9 04 00 65 87 
+        // parsed: offset 306, len 2: |0015: move-result-object v0
+            0C 00 
+        // parsed: offset 308, len 2: |0016: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 310, len 2: PADDING
+    00 00 
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array.d.T_filled_new_array_8.run"
+    // parsed: offset 312, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 314, len 2: ins_size: 6
+        06 00 
+    // parsed: offset 316, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 318, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 320, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 324, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 328, len 6: |0000: filled-new-array {v5, v6, v7, v8, v9}, [I // class@0004
+//@mod            24 59 04 00 65 87 
+            24 F9 04 00 65 87 
+        // parsed: offset 334, len 2: |0003: move-result-object v0
+            0C 00 
+        // parsed: offset 336, len 2: |0004: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 338, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 5
+        05 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 346, len 2: type_item [1] type_idx: 0
+        00 00 
+    // parsed: offset 348, len 2: type_item [2] type_idx: 0
+        00 00 
+    // parsed: offset 350, len 2: type_item [3] type_idx: 0
+        00 00 
+    // parsed: offset 352, len 2: type_item [4] type_idx: 0
+        00 00 
+// parsed: offset 354, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 362, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 365, len 8: TYPE_STRING_DATA_ITEM [2] "LIIIII"
+    06 4C 49 49 49 49 49 00 
+// parsed: offset 373, len 61: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+    3B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 2F 64 2F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 38 3B 00 
+// parsed: offset 434, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 454, len 27: TYPE_STRING_DATA_ITEM [5] "T_filled_new_array_8.java"
+    19 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 481, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 484, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 488, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/filled_new_array/d/T_filled_new_array_8;"
+    // parsed: offset 493, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 494, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 495, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 496, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 497, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 498, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 501, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 503, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 504, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 505, len 2: code_off: 312 (0x000138)
+                B8 02 
+// parsed: offset 507, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 508, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 512, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 524, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 536, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 548, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 560, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 572, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 584, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 596, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 608, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 354 (0x000162)
+        02 20 00 00 09 00 00 00 62 01 00 00 
+    // parsed: offset 620, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 493 (0x0001ed)
+        00 20 00 00 01 00 00 00 ED 01 00 00 
+    // parsed: offset 632, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 508 (0x0001fc)
+        00 10 00 00 01 00 00 00 FC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.d
new file mode 100644
index 0000000..c7ba0ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2009 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.
+
+.source T_filled_new_array_9.java
+.class public dot.junit.opcodes.filled_new_array.d.T_filled_new_array_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;)[Ljava/lang/Object;
+.limit regs 10
+    filled-new-array {v9}, [Ljava/lang/String;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.java
new file mode 100644
index 0000000..46cac1a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array/d/T_filled_new_array_9.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.filled_new_array.d;
+
+public class T_filled_new_array_9 {
+    public Object[] run(Object a) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/TestStubs.java
new file mode 100644
index 0000000..47b87e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/TestStubs.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2009 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 dot.junit.opcodes.filled_new_array_range;
+
+// used by T_filled_new_array_range_11
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/Test_filled_new_array_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/Test_filled_new_array_range.java
new file mode 100644
index 0000000..84b1379
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/Test_filled_new_array_range.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.filled_new_array_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_1;
+import dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_10;
+import dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_11;
+import dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_2;
+
+public class Test_filled_new_array_range extends DxTestCase {
+    /**
+     * @title array of ints
+     */
+    public void testN1() {
+        T_filled_new_array_range_1 t = new T_filled_new_array_range_1();
+        int[] arr = t.run(1, 2, 3, 4, 5);
+        assertNotNull(arr);
+        assertEquals(5, arr.length);
+        for(int i = 0; i < 5; i++)
+            assertEquals(i + 1, arr[i]);
+     }
+
+    /**
+     * @title array of objects
+     */
+    public void testN2() {
+        T_filled_new_array_range_2 t = new T_filled_new_array_range_2();
+        String s = "android";
+        Object[] arr = t.run(t, s);
+        assertNotNull(arr);
+        assertEquals(2, arr.length);
+        assertEquals(t, arr[0]);
+        assertEquals(s, arr[1]);
+    }
+
+    /**
+     * @constraint A18
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to pass obj ref instead of int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to pass long instead of int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title try to create non-array type
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title invalid arg count
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title attempt to instantiate String[] and fill it with reference to assignment-incompatible class
+     */
+    public void testVFE7() {
+        try {
+        	Class.forName("dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_9");
+        	fail("expected a verification exception"); 
+        } catch(Throwable t) { 
+        	DxUtil.checkVerifyException(t);	
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title attempt to instantiate array of non-existent class
+     */
+    public void testVFE8() {
+        T_filled_new_array_range_10 t = new T_filled_new_array_range_10();
+        try {
+            t.run();
+            fail("expected NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title attempt to instantiate array of inaccessible class
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_11
+        //@uses dot.junit.opcodes.filled_new_array_range.TestStubs
+        T_filled_new_array_range_11 t = new T_filled_new_array_range_11();
+        try {
+            t.run();
+            fail("expected IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.d
new file mode 100644
index 0000000..503c12a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_range_1.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.java
new file mode 100644
index 0000000..6e69a23
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.filled_new_array_range.d;
+
+public class T_filled_new_array_range_1 {
+    public int[] run(int a, int b, int c, int d, int e) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.d
new file mode 100644
index 0000000..50a34b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2009 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.
+
+.source T_filled_new_array_range_10.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 10
+    const v9, 0
+    filled-new-array/range {v9}, [Ljava/lang/StringNNNNN;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.java
new file mode 100644
index 0000000..57075bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.filled_new_array_range.d;
+
+public class T_filled_new_array_range_10 {
+    public Object[] run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.d
new file mode 100644
index 0000000..e3a21e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2009 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.
+
+.source T_filled_new_array_range_11.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 10
+    const v9, 0
+    filled-new-array/range {v9}, [Ldot/junit/opcodes/filled_new_array_range/TestStubs;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.java
new file mode 100644
index 0000000..f4ca611
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_11.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.filled_new_array_range.d;
+
+public class T_filled_new_array_range_11 {
+    public Object[] run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.d
new file mode 100644
index 0000000..2b2ef15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_range_2.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
+.limit regs 10
+    filled-new-array/range {v8..v9}, [Ljava/lang/Object;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.java
new file mode 100644
index 0000000..51d1d32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.filled_new_array_range.d;
+
+public class T_filled_new_array_range_2 {
+    public Object[] run(Object a, Object b) {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.d
new file mode 100644
index 0000000..f8c25f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_range_3.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dfh
new file mode 100644
index 0000000..1a620e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dfh
@@ -0,0 +1,280 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a199569d
+    9D 56 99 A1 
+// parsed: offset 12, len 20: signature           : 62a6...ef00
+    62 A6 E9 6F 30 02 D1 5F BB C2 AB 25 06 22 11 D4 FF 0B EF 00 
+// parsed: offset 32, len 4: file_size           : 624
+    70 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 376
+    78 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "LIIIII"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 333 (0x00014d) "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+    4D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 406 (0x000196) "Ljava/lang/Object;"
+    96 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 426 (0x0001aa) "T_filled_new_array_range_3.java"
+    AA 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 459 (0x0001cb) "V"
+    CB 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 462 (0x0001ce) "[I"
+    CE 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 466 (0x0001d2) "run"
+    D2 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LIIIII"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 300 (0x00012c)
+    02 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_filled_new_array_range_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 471 (0x0001d7)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D7 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_3.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_3.run"
+    // parsed: offset 272, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 274, len 2: ins_size: 6
+        06 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: filled-new-array/range {v5..v9}, [I // class@0004
+//@mod            25 05 04 00 05 00 
+            25 05 04 01 05 00 
+        // parsed: offset 294, len 2: |0003: move-result-object v0
+            0C 00 
+        // parsed: offset 296, len 2: |0004: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 298, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 5
+        05 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+    // parsed: offset 308, len 2: type_item [2] type_idx: 0
+        00 00 
+    // parsed: offset 310, len 2: type_item [3] type_idx: 0
+        00 00 
+    // parsed: offset 312, len 2: type_item [4] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 8: TYPE_STRING_DATA_ITEM [2] "LIIIII"
+    06 4C 49 49 49 49 49 00 
+// parsed: offset 333, len 73: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+    47 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 2F 64 2F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 5F 33 3B 00 
+// parsed: offset 406, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 426, len 33: TYPE_STRING_DATA_ITEM [5] "T_filled_new_array_range_3.java"
+    1F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 459, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 462, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 466, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_3;"
+    // parsed: offset 471, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 473, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 474, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 475, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 476, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 479, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 481, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 482, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 483, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 485, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 488, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 471 (0x0001d7)
+        00 20 00 00 01 00 00 00 D7 01 00 00 
+    // parsed: offset 612, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.d
new file mode 100644
index 0000000..ab3d24e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_range_4.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v10}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.d
new file mode 100644
index 0000000..6781fa1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_range_5.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v4..v8}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.d
new file mode 100644
index 0000000..33233b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_range_6.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIIJ)V
+.limit regs 11
+    filled-new-array/range {v5..v9}, [I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.d
new file mode 100644
index 0000000..f60043a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_range_7.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v9}, I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.d
new file mode 100644
index 0000000..7a93faf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_filled_new_array_range_8.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IIIII)[I
+.limit regs 10
+    filled-new-array/range {v5..v9}, [I
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dfh
new file mode 100644
index 0000000..c2696b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dfh
@@ -0,0 +1,280 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 8d4c570b
+    0B 57 4C 8D 
+// parsed: offset 12, len 20: signature           : 0ab5...07fe
+    0A B5 95 25 DA 23 40 C1 99 88 9F D1 05 88 E3 24 5C 7C 07 FE 
+// parsed: offset 32, len 4: file_size           : 624
+    70 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 376
+    78 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "LIIIII"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 333 (0x00014d) "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+    4D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 406 (0x000196) "Ljava/lang/Object;"
+    96 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 426 (0x0001aa) "T_filled_new_array_range_8.java"
+    AA 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 459 (0x0001cb) "V"
+    CB 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 462 (0x0001ce) "[I"
+    CE 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 466 (0x0001d2) "run"
+    D2 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LIIIII"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 300 (0x00012c)
+    02 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_filled_new_array_range_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 471 (0x0001d7)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D7 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_8.run"
+    // parsed: offset 272, len 2: registers_size: 10
+        0A 00 
+    // parsed: offset 274, len 2: ins_size: 6
+        06 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: filled-new-array/range {v5..v9}, [I // class@0004
+//@mod            25 05 04 00 05 00 
+            25 FF 04 00 05 00 
+        // parsed: offset 294, len 2: |0003: move-result-object v0
+            0C 00 
+        // parsed: offset 296, len 2: |0004: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 298, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 5
+        05 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+    // parsed: offset 308, len 2: type_item [2] type_idx: 0
+        00 00 
+    // parsed: offset 310, len 2: type_item [3] type_idx: 0
+        00 00 
+    // parsed: offset 312, len 2: type_item [4] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 8: TYPE_STRING_DATA_ITEM [2] "LIIIII"
+    06 4C 49 49 49 49 49 00 
+// parsed: offset 333, len 73: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+    47 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 2F 64 2F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 5F 38 3B 00 
+// parsed: offset 406, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 426, len 33: TYPE_STRING_DATA_ITEM [5] "T_filled_new_array_range_8.java"
+    1F 54 5F 66 69 6C 6C 65 64 5F 6E 65 77 5F 61 72 72 61 79 5F 72 61 6E 67 65 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 459, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 462, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 466, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_8;"
+    // parsed: offset 471, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 473, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 474, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 475, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 476, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 479, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 481, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 482, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 483, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 485, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 488, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 471 (0x0001d7)
+        00 20 00 00 01 00 00 00 D7 01 00 00 
+    // parsed: offset 612, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.d
new file mode 100644
index 0000000..4218cbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2009 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.
+
+.source T_filled_new_array_range_9.java
+.class public dot.junit.opcodes.filled_new_array_range.d.T_filled_new_array_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+    invoke-direct {v0}, java/lang/Object/<init>()V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;)[Ljava/lang/Object;
+.limit regs 10
+    filled-new-array/range {v9}, [Ljava/lang/String;
+    move-result-object v0
+    return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.java
new file mode 100644
index 0000000..42ceba8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/filled_new_array_range/d/T_filled_new_array_range_9.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.filled_new_array_range.d;
+
+public class T_filled_new_array_range_9 {
+    public void run() {
+        return;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/Test_float_to_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/Test_float_to_double.java
new file mode 100644
index 0000000..93b6df7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/Test_float_to_double.java
@@ -0,0 +1,180 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.float_to_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.float_to_double.d.T_float_to_double_1;
+import dot.junit.opcodes.float_to_double.d.T_float_to_double_7;
+
+public class Test_float_to_double extends DxTestCase {
+     /**
+     * @title Argument = 0.5
+     */
+    public void testN1() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertEquals(0.5d, t.run(0.5f), 0d);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertEquals(1d, t.run(1), 0d);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertEquals(-1d, t.run(-1), 0d);
+    }
+    
+    /**
+     * @title Type of argument - int. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of int to double makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_float_to_double_7 t = new T_float_to_double_7();
+        try {
+            t.run(1);
+        } catch (Throwable e) {
+        }
+    }  
+
+    /**
+     * @title Argument = Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        double r = 0x1.fffffeP+127d;
+        assertEquals(r, t.run(Float.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = Float.MIN_VALUE
+     */
+    public void testB2() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        double r = 0x0.000002P-126d;
+        assertEquals(r, t.run(Float.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = -0
+     */
+    public void testB3() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertEquals(-0d, t.run(-0), 0d);
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertTrue(Double.isNaN(t.run(Float.NaN)));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertTrue(Double.isInfinite(t.run(Float.POSITIVE_INFINITY)));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_float_to_double_1 t = new T_float_to_double_1();
+        assertTrue(Double.isInfinite(t.run(Float.NEGATIVE_INFINITY)));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_double.d.T_float_to_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.d
new file mode 100644
index 0000000..0854de3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_double_1.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       float-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.java
new file mode 100644
index 0000000..c14f8aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.float_to_double.d;
+
+public class T_float_to_double_1 {
+
+    public double run(float a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.d
new file mode 100644
index 0000000..c37c547
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_double_2.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       const-wide v2, 3.14    
+       float-to-double v0, v2
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.d
new file mode 100644
index 0000000..59217ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_double_3.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       const-wide v2, 1223
+       float-to-double v0, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.d
new file mode 100644
index 0000000..32f2b0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_double_4.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 1
+
+       const v0, 3.14
+       float-to-double v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.d
new file mode 100644
index 0000000..77c3dc3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_double_5.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       float-to-double v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.d
new file mode 100644
index 0000000..eac86d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_double_6.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       float-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.d
new file mode 100644
index 0000000..71f3c83
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_double_7.java
+.class public dot.junit.opcodes.float_to_double.d.T_float_to_double_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       float-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.java
new file mode 100644
index 0000000..9018914
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_double/d/T_float_to_double_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.float_to_double.d;
+
+public class T_float_to_double_7 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/Test_float_to_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/Test_float_to_int.java
new file mode 100644
index 0000000..27caeaa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/Test_float_to_int.java
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.float_to_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.float_to_int.d.T_float_to_int_1;
+import dot.junit.opcodes.float_to_int.d.T_float_to_int_5;
+
+public class Test_float_to_int extends DxTestCase {
+
+    /**
+     * @title Argument = 2.999999f
+     */
+    public void testN1() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(2, t.run(2.999999f));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(1, t.run(1f));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(-1, t.run(-1f));
+    }
+
+    /**
+     * @title Type of argument - int. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of int to int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_float_to_int_5 t = new T_float_to_int_5();
+        try {
+            t.run(1);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Argument = -0f
+     */
+    public void testB1() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(0, t.run(-0f));
+    }
+
+    /**
+     * @title Argument = Float.MAX_VALUE
+     */
+    public void testB2() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Float.MIN_VALUE
+     */
+    public void testB3() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(0, t.run(Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(0, t.run(Float.NaN));
+    }
+
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_float_to_int_1 t = new T_float_to_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_int.d.T_float_to_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_int.d.T_float_to_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_int.d.T_float_to_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_int.d.T_float_to_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.d
new file mode 100644
index 0000000..35f2eef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_int_1.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       float-to-int v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.java
new file mode 100644
index 0000000..b07cb68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.float_to_int.d;
+
+public class T_float_to_int_1 {
+
+    public int run(float a) {
+        return (int)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.d
new file mode 100644
index 0000000..61a8c4f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_int_2.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       const-wide v1, 3.14
+       float-to-int v0, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.d
new file mode 100644
index 0000000..0401ffd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_int_3.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       const-wide v1, 1234
+       float-to-int v0, v1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.d
new file mode 100644
index 0000000..94fb137
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_int_4.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       float-to-int v0, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.d
new file mode 100644
index 0000000..697a193
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_int_5.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       float-to-int v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.java
new file mode 100644
index 0000000..794d0d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.float_to_int.d;
+
+public class T_float_to_int_5 {
+
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.d
new file mode 100644
index 0000000..6fa95c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_int/d/T_float_to_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_int_6.java
+.class public dot.junit.opcodes.float_to_int.d.T_float_to_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       float-to-int v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/Test_float_to_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/Test_float_to_long.java
new file mode 100644
index 0000000..97e2325
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/Test_float_to_long.java
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.float_to_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.float_to_long.d.T_float_to_long_1;
+import dot.junit.opcodes.float_to_long.d.T_float_to_long_7;
+
+public class Test_float_to_long extends DxTestCase {
+    /**
+     * @title Argument = 2.999999f
+     */
+    public void testN1() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(2l, t.run(2.999999f));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+         T_float_to_long_1 t = new T_float_to_long_1();
+         assertEquals(1l, t.run(1));
+    }
+    
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+         T_float_to_long_1 t = new T_float_to_long_1();
+         assertEquals(-1l, t.run(-1));
+    }
+
+    /**
+     * @title Type of argument - int. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of int to long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_float_to_long_7 t = new T_float_to_long_7();
+        try {
+            t.run(1);
+        } catch (Throwable e) {
+        }
+    } 
+    
+    /**
+     * @title Argument = Float.MAX_VALUE
+     */
+    public void testB1() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Float.MIN_VALUE
+     */
+    public void testB2() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(0, t.run(Float.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(0l, t.run(0));
+    }
+    
+    /**
+     * @title Argument = NaN
+     */
+    public void testB4() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(0l, t.run(Float.NaN));
+    }
+    
+    /**
+     * @title Argument = POSITIVE_INFINITY
+     */
+    public void testB5() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Float.POSITIVE_INFINITY));
+    }
+    
+    /**
+     * @title Argument = NEGATIVE_INFINITY
+     */
+    public void testB6() {
+        T_float_to_long_1 t = new T_float_to_long_1();
+        assertEquals(Long.MIN_VALUE, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of arguments
+     */
+    public void testVFE1() {
+        try
+        {
+            Class.forName("dxc.junit.opcodes.float_to_long.jm.T_float_to_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try
+        {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try
+        {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try
+        {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE5() {
+        try
+        {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.float_to_long.d.T_float_to_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.d
new file mode 100644
index 0000000..a4a5c24
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_long_1.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       float-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.java
new file mode 100644
index 0000000..667a37b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.float_to_long.d;
+
+public class T_float_to_long_1 {
+
+    public long run(float a) {
+        return (long)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.d
new file mode 100644
index 0000000..ea3525a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_long_2.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       const-wide v2, 3.14    
+       float-to-long v0, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.d
new file mode 100644
index 0000000..1fde1d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_long_3.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       const-wide v2, 1223
+       float-to-long v0, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.d
new file mode 100644
index 0000000..69d1e57
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_long_4.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 1
+
+       const v0, 3.14
+       float-to-long v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.d
new file mode 100644
index 0000000..148381a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_long_5.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       float-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.d
new file mode 100644
index 0000000..99fa733
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_long_6.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       float-to-long v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.d
new file mode 100644
index 0000000..30c969c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_float_to_long_7.java
+.class public dot.junit.opcodes.float_to_long.d.T_float_to_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       float-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.java
new file mode 100644
index 0000000..58ae745
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/float_to_long/d/T_float_to_long_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.float_to_long.d;
+
+public class T_float_to_long_7 {
+
+    public long run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/Test_goto_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/Test_goto_16.java
new file mode 100644
index 0000000..2891fc4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/Test_goto_16.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.goto_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.goto_16.d.T_goto_16_1;
+
+public class Test_goto_16 extends DxTestCase {
+       /**
+        * @title check forward and backward goto. This test also tests constraint C17 allowing to have
+        * backward goto as a last opcode in the method.
+        */
+       public void testN1() {
+           T_goto_16_1 t = new T_goto_16_1();
+           assertEquals(0, t.run(20));
+       }
+
+       /**
+        * @constraint A6 
+        * @title branch target is inside instruction
+        */
+       public void testVFE1() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_16.d.T_goto_16_3");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+
+       /**
+        * @constraint A6 
+        * @title branch target shall be inside the method
+        */
+       public void testVFE2() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_16.d.T_goto_16_2");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+
+       /**
+        * @constraint n/a 
+        * @title zero offset
+        */
+       public void testVFE3() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_16.d.T_goto_16_4");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.d
new file mode 100644
index 0000000..caa4ad0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 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.
+
+.source T_goto_16_1.java
+.class public dot.junit.opcodes.goto_16.d.T_goto_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+; test positive offset
+      goto/16 Label2
+LabelReturn:      
+      return v4
+      
+Label2:
+       add-int/lit8 v4, v4, -1
+       if-lez v4, LabelExit
+; test negative offset       
+       goto/16 Label2
+       
+LabelExit:       
+       goto LabelReturn
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.java
new file mode 100644
index 0000000..381d04f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.goto_16.d;
+
+public class T_goto_16_1 {
+
+    public int run(int a) {
+        while (a > 0) {
+            a--;
+        }
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.d
new file mode 100644
index 0000000..7162694
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_goto_16_2.java
+.class public dot.junit.opcodes.goto_16.d.T_goto_16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/16 Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.dfh
new file mode 100644
index 0000000..9e83d7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_2.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e5ec3c50
+    50 3C EC E5 
+// parsed: offset 12, len 20: signature           : 700a...7219
+    70 0A 71 39 79 DA 76 3F 7D B4 5A 82 07 EA 55 1E C7 F1 72 19 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_16_2.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_16_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_2.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_2.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: goto/16 0004 // +0x0004
+//@mod            29 00 02 00
+            29 00 02 01
+        // parsed: offset 284, len 2: |0002: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 31 36 2F 64 2F 54 5F 67 6F 74 6F 5F 31 36 5F 32 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_16_2.java"
+    10 54 5F 67 6F 74 6F 5F 31 36 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_16/d/T_goto_16_2;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.java
new file mode 100644
index 0000000..d9729a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.goto_16.d;
+
+public class T_goto_16_2 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.d
new file mode 100644
index 0000000..fcaa68d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_goto_16_3.java
+.class public dot.junit.opcodes.goto_16.d.T_goto_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/16 Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.dfh
new file mode 100644
index 0000000..10045e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_3.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 77e43d0f
+    0F 3D E4 77 
+// parsed: offset 12, len 20: signature           : 8373...27f3
+    83 73 D6 CF 41 96 B2 D5 47 35 AB 73 18 04 6D FD 57 13 27 F3 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_16_3.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_16_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_3.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_3.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: goto/16 0004 // +0x0004
+//@mod            29 00 02 00 
+            29 00 03 00 
+        // parsed: offset 284, len 2: |0002: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 31 36 2F 64 2F 54 5F 67 6F 74 6F 5F 31 36 5F 33 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_16_3.java"
+    10 54 5F 67 6F 74 6F 5F 31 36 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_16/d/T_goto_16_3;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.d
new file mode 100644
index 0000000..746c325
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_goto_16_4.java
+.class public dot.junit.opcodes.goto_16.d.T_goto_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/16 Label1
+Label1:      
+      return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.dfh
new file mode 100644
index 0000000..1b43042
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_16/d/T_goto_16_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 5cce3b13
+    13 3B CE 5C 
+// parsed: offset 12, len 20: signature           : f804...031e
+    F8 04 35 7B 64 32 AC 72 3D A1 7F 03 35 09 E1 77 49 DF 03 1E 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_16_4.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_16_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_4.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_16.d.T_goto_16_4.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: goto/16 0004 // +0x0004
+//@mod            29 00 02 00 
+            29 00 00 00 
+        // parsed: offset 284, len 2: |0002: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 31 36 2F 64 2F 54 5F 67 6F 74 6F 5F 31 36 5F 34 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_16_4.java"
+    10 54 5F 67 6F 74 6F 5F 31 36 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_16/d/T_goto_16_4;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.java
new file mode 100644
index 0000000..4a087dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_16/d/T_goto_16_4.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.goto_16.d;
+
+public class T_goto_16_4 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/Test_goto_32.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/Test_goto_32.java
new file mode 100644
index 0000000..5f7a4dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/Test_goto_32.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.goto_32;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.goto_32.d.T_goto_32_1;
+
+public class Test_goto_32 extends DxTestCase {
+       /**
+        * @title check forward and backward goto. This test also tests constraint C17 allowing to have
+        * backward goto as a last opcode in the method.
+        */
+       public void testN1() {
+           T_goto_32_1 t = new T_goto_32_1();
+           assertEquals(0, t.run(20));
+       }
+
+       /**
+        * @constraint A6 
+        * @title branch target is inside instruction
+        */
+       public void testVFE1() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_32.d.T_goto_32_2");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+
+       /**
+        * @constraint A6 
+        * @title branch target shall be inside the method
+        */
+       public void testVFE2() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_32.d.T_goto_32_3");
+               fail("expected a verification exception");
+           } catch (Throwable t) {
+               DxUtil.checkVerifyException(t);
+           }
+       }
+
+       /**
+        *  
+        * @constraint n/a 
+        * @title zero offset - no exception expected
+        */
+       public void testVFE3() {
+           try {
+               Class.forName("dot.junit.opcodes.goto_32.d.T_goto_32_4");
+               // no exception is expected
+           } catch (Throwable t) {
+               fail("not expected" + t);
+           }
+       }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.d
new file mode 100644
index 0000000..fd5335a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 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.
+
+.source T_goto_32_1.java
+.class public dot.junit.opcodes.goto_32.d.T_goto_32_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+; test positive offset
+      goto/32 Label2
+LabelReturn:      
+      return v4
+      
+Label2:
+       add-int/lit8 v4, v4, -1
+       if-lez v4, LabelExit
+; test negative offset       
+       goto/32 Label2
+       
+LabelExit:       
+       goto LabelReturn
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.java
new file mode 100644
index 0000000..90067e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.goto_32.d;
+
+public class T_goto_32_1 {
+
+    public int run(int a) {
+        while (a > 0) {
+            a--;
+        }
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.d
new file mode 100644
index 0000000..1a76901
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_goto_32_2.java
+.class public dot.junit.opcodes.goto_32.d.T_goto_32_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/32 Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.dfh
new file mode 100644
index 0000000..4b28769
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.dfh
@@ -0,0 +1,260 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_32/d/T_goto_32_2.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_32/d/T_goto_32_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 66653ef5
+    F5 3E 65 66 
+// parsed: offset 12, len 20: signature           : f397...b4a3
+    F3 97 87 FB A7 9D A8 95 06 46 CD 7D 6B 68 DE D4 68 21 B4 A3 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_32_2.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_32_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_32.d.T_goto_32_2.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_32.d.T_goto_32_2.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: goto/32 #0x00000003
+//@mod            2A 00 03 00 00 00 
+            2A 00 03 00 00 10 
+        // parsed: offset 286, len 2: |0003: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 33 32 2F 64 2F 54 5F 67 6F 74 6F 5F 33 32 5F 32 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_32_2.java"
+    10 54 5F 67 6F 74 6F 5F 33 32 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_32/d/T_goto_32_2;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.java
new file mode 100644
index 0000000..2f6d726
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_2.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.goto_32.d;
+
+public class T_goto_32_2 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.d
new file mode 100644
index 0000000..6130ae8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_goto_32_3.java
+.class public dot.junit.opcodes.goto_32.d.T_goto_32_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto/32 Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.dfh
new file mode 100644
index 0000000..4d69427
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_3.dfh
@@ -0,0 +1,260 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_32/d/T_goto_32_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/goto_32/d/T_goto_32_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : d7f03cc2
+    C2 3C F0 D7 
+// parsed: offset 12, len 20: signature           : 7597...1d22
+    75 97 05 E2 0A 6D AC B6 E0 92 5B 17 04 77 DE 99 7E F4 1D 22 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "I"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 305 (0x000131) "II"
+    31 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 309 (0x000135) "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+    35 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 352 (0x000160) "Ljava/lang/Object;"
+    60 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 372 (0x000174) "T_goto_32_3.java"
+    74 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 288 (0x000120)
+    02 00 00 00 00 00 00 00 20 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_goto_32_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 398 (0x00018e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.goto_32.d.T_goto_32_3.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.goto_32.d.T_goto_32_3.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: goto/32 #0x00000003
+//@mod            2A 00 03 00 00 00 
+            2A 00 04 00 00 00 
+        // parsed: offset 286, len 2: |0003: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 305, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 309, len 43: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 67 6F 74 6F 5F 33 32 2F 64 2F 54 5F 67 6F 74 6F 5F 33 32 5F 33 3B 00 
+// parsed: offset 352, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 372, len 18: TYPE_STRING_DATA_ITEM [5] "T_goto_32_3.java"
+    10 54 5F 67 6F 74 6F 5F 33 32 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/goto_32/d/T_goto_32_3;"
+    // parsed: offset 398, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 400, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 401, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 402, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 403, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 406, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 408, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 410, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 398 (0x00018e)
+        00 20 00 00 01 00 00 00 8E 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.d
new file mode 100644
index 0000000..624dfaf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/goto_32/d/T_goto_32_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_goto_32_4.java
+.class public dot.junit.opcodes.goto_32.d.T_goto_32_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+Label1:
+      goto/32 Label1
+      return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/Test_if_eq.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/Test_if_eq.java
new file mode 100644
index 0000000..ed9b9e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/Test_if_eq.java
@@ -0,0 +1,223 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.if_eq;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_eq.d.T_if_eq_1;
+import dot.junit.opcodes.if_eq.d.T_if_eq_2;
+import dot.junit.opcodes.if_eq.d.T_if_eq_4;
+
+public class Test_if_eq extends DxTestCase {
+    
+    /**
+     * @title Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_eq_1 t = new T_if_eq_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_eq instruction
+         */
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title Arguments = 0x01001234, 0x1234
+     */
+    public void testN4() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1234, t.run(0x01001234, 0x1234));
+    }
+    
+    /**
+     * @title compare references
+     */
+    public void testN5() {
+        T_if_eq_2 t = new T_if_eq_2();
+        String a = "a";
+        String b = "b";
+        assertEquals(1234, t.run(a, b));
+    }
+
+    /**
+     * @title compare references
+     */
+    public void testN6() {
+        T_if_eq_2 t = new T_if_eq_2();
+        String a = "a";
+        assertEquals(1, t.run(a, a));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_if_eq_4 t = new T_if_eq_4();
+        assertEquals(1234, t.run(1f, 1));
+    }  
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 1234567
+     */
+    public void testB3() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1234, t.run(0, 1234567));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB4() {
+        T_if_eq_1 t = new T_if_eq_1();
+        assertEquals(1, t.run(0, 0));
+    }
+    
+    /**
+     * @title Compare reference with null
+     */
+    public void testB5() {
+        T_if_eq_2 t = new T_if_eq_2();
+        String a = "a";
+        assertEquals(1234, t.run(null, a));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title  zero offset
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eq.d.T_if_eq_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.d
new file mode 100644
index 0000000..b9e4603
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.d
@@ -0,0 +1,24 @@
+.source T_if_eq_1.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.java
new file mode 100644
index 0000000..d9015d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_1 {
+
+    public int run(int a, int b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.d
new file mode 100644
index 0000000..a7f0474
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.d
@@ -0,0 +1,23 @@
+.source T_if_eq_10.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-eq v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.dfh
new file mode 100644
index 0000000..d0c3c14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ddba4029
+    29 40 BA DD 
+// parsed: offset 12, len 20: signature           : 888d...fb6f
+    88 8D 32 BC 19 C6 2A 6E 73 92 D4 07 A2 C9 A0 63 98 56 FB 6F 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_eq_10.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "Z"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 402 (0x000192) "ZII"
+    92 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eq_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-eq v6, v7, 0004 // +0x0004
+//@mod      32 76 04 00 
+            32 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 2F 64 2F 54 5F 69 66 5F 65 71 5F 31 30 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_eq_10.java"
+    0F 54 5F 69 66 5F 65 71 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 402, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eq/d/T_if_eq_10;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.java
new file mode 100644
index 0000000..6350454
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_10.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_10 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.d
new file mode 100644
index 0000000..f266a25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.d
@@ -0,0 +1,26 @@
+.source T_if_eq_11.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)V
+.limit regs 8
+
+       if-eq v6, v7, Label10
+       const/4 v6, 0
+       return-void
+
+Label10:
+       const v6, 1
+       nop
+       nop
+       const/4 v6, 1
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.dfh
new file mode 100644
index 0000000..b0293d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : f79d4878
+    78 48 9D F7 
+// parsed: offset 12, len 20: signature           : f49a...1f2e
+    F4 9A EE 46 B0 E3 E8 12 25 CB 9A BC D5 F7 87 9C F1 75 1F 2E 
+// parsed: offset 32, len 4: file_size           : 580
+    44 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 444 (0x0001bc)
+    BC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 340
+    54 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 312 (0x000138) "<init>"
+    38 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 320 (0x000140) "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+    40 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 360 (0x000168) "Ljava/lang/Object;"
+    68 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 380 (0x00017c) "Ljava/lang/String;"
+    7C 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 400 (0x000190) "T_if_eq_11.java"
+    90 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 417 (0x0001a1) "V"
+    A1 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 420 (0x0001a4) "VLL"
+    A4 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 425 (0x0001a9) "run"
+    A9 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/String;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "VLL"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 304 (0x000130)
+    06 00 00 00 03 00 00 00 30 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eq_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 430 (0x0001ae)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 AE 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_11.run"
+    // parsed: offset 264, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 266, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 11
+        0B 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: if-eq v6, v7, 0004 // +0x0004
+//@mod            32 76 04 00 
+            32 76 05 00 
+        // parsed: offset 284, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 286, len 2: |0003: return-void
+            0E 00 
+        // parsed: offset 288, len 6: |0004: const v6, #float 0.000000 // #0x00000001 int
+            14 06 01 00 00 00 
+        // parsed: offset 294, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 296, len 2: |0008: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0009: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 300, len 2: |000a: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 302, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 304, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 308, len 2: type_item [0] type_idx: 2
+        02 00 
+    // parsed: offset 310, len 2: type_item [1] type_idx: 2
+        02 00 
+// parsed: offset 312, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 320, len 40: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 2F 64 2F 54 5F 69 66 5F 65 71 5F 31 31 3B 00 
+// parsed: offset 360, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 380, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 400, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_eq_11.java"
+    0F 54 5F 69 66 5F 65 71 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 417, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 420, len 5: TYPE_STRING_DATA_ITEM [6] "VLL"
+    03 56 4C 4C 00 
+// parsed: offset 425, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eq/d/T_if_eq_11;"
+    // parsed: offset 430, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 431, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 432, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 433, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 434, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 435, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 438, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 440, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 441, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 442, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 444, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 448, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 460, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 472, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 484, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 496, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 508, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 520, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 532, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 304 (0x000130)
+        01 10 00 00 01 00 00 00 30 01 00 00 
+    // parsed: offset 544, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 312 (0x000138)
+        02 20 00 00 08 00 00 00 38 01 00 00 
+    // parsed: offset 556, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 430 (0x0001ae)
+        00 20 00 00 01 00 00 00 AE 01 00 00 
+    // parsed: offset 568, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 444 (0x0001bc)
+        00 10 00 00 01 00 00 00 BC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.java
new file mode 100644
index 0000000..3c5f8fd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_11.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_11 {
+
+    public boolean run(String a, String b) {
+        return a == b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.d
new file mode 100644
index 0000000..9f0d34f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.d
@@ -0,0 +1,24 @@
+.source T_if_eq_12.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.dfh
new file mode 100644
index 0000000..f327ba6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_12.dfh
@@ -0,0 +1,272 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_12.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_eq/d/T_if_eq_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 48be3ebd
+    BD 3E BE 48 
+// parsed: offset 12, len 20: signature           : 8ffe...1c12
+    8F FE A9 63 12 82 FD 99 23 44 02 D2 77 6A C4 D2 00 1A 1C 12 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 304 (0x000130) "<init>"
+    30 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 312 (0x000138) "I"
+    38 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 315 (0x00013b) "III"
+    3B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 320 (0x000140) "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+    40 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 360 (0x000168) "Ljava/lang/Object;"
+    68 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "T_if_eq_12.java"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "run"
+    90 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "III"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 296 (0x000128)
+    02 00 00 00 00 00 00 00 28 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_if_eq_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_12.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eq.d.T_if_eq_12.run"
+    // parsed: offset 264, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 266, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: if-eq v6, v7, 0005 // +0x0005
+//@mod            32 76 05 00 
+            32 76 00 00 
+        // parsed: offset 284, len 4: |0002: const/16 v6, #int 1234 // #0x4d2
+            13 06 D2 04 
+        // parsed: offset 288, len 2: |0004: return v6
+            0F 06 
+        // parsed: offset 290, len 2: |0005: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 292, len 2: |0006: goto 0004 // -0x0002
+            28 FE 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 296, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 300, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 302, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 304, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 312, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 315, len 5: TYPE_STRING_DATA_ITEM [2] "III"
+    03 49 49 49 00 
+// parsed: offset 320, len 40: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 2F 64 2F 54 5F 69 66 5F 65 71 5F 31 32 3B 00 
+// parsed: offset 360, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 380, len 17: TYPE_STRING_DATA_ITEM [5] "T_if_eq_12.java"
+    0F 54 5F 69 66 5F 65 71 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eq/d/T_if_eq_12;"
+    // parsed: offset 405, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 409, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 410, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 413, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 416, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 417, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 419, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 296 (0x000128)
+        01 10 00 00 01 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 304 (0x000130)
+        02 20 00 00 08 00 00 00 30 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.d
new file mode 100644
index 0000000..239ef80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.d
@@ -0,0 +1,24 @@
+.source T_if_eq_2.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.java
new file mode 100644
index 0000000..2e3f2e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_2 {
+
+    public int run(String a, String b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.d
new file mode 100644
index 0000000..8cc6f7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_if_eq_3.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.java
new file mode 100644
index 0000000..e1d63c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_3 {
+
+    public int run(float a, float b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.d
new file mode 100644
index 0000000..614b6b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.d
@@ -0,0 +1,24 @@
+.source T_if_eq_4.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.java
new file mode 100644
index 0000000..8a85025
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_4.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_4 {
+
+    public int run(float a, int b) {
+        return a == b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.d
new file mode 100644
index 0000000..94dd327
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_5.d
@@ -0,0 +1,24 @@
+.source T_if_eq_5.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-eq v6, v8, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.d
new file mode 100644
index 0000000..29f910b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_if_eq_6.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+.limit regs 8
+
+       if-eq v6, v8, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.java
new file mode 100644
index 0000000..ab33d58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.if_eq.d;
+
+public class T_if_eq_6 {
+
+    public boolean run(int a, int b) {
+        return a == b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.d
new file mode 100644
index 0000000..ded22b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_7.d
@@ -0,0 +1,24 @@
+.source T_if_eq_7.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-eq v5, v6, Label11
+       const/16 v5, 1234
+Label10:
+       return v5
+       
+Label11:
+       const/4 v5, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.d
new file mode 100644
index 0000000..8e67f2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_8.d
@@ -0,0 +1,24 @@
+.source T_if_eq_8.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-eq v5, v7, Label11
+       const/16 v5, 1234
+Label10:
+       return v5
+       
+Label11:
+       const/4 v5, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.d
new file mode 100644
index 0000000..b158878
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eq/d/T_if_eq_9.d
@@ -0,0 +1,24 @@
+.source T_if_eq_9.java
+.class public dot.junit.opcodes.if_eq.d.T_if_eq_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ILjava/lang/String;)I
+.limit regs 8
+
+       if-eq v6, v7, Label11
+       const/16 v6, 1234
+Label10:
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       goto Label10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/Test_if_eqz.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/Test_if_eqz.java
new file mode 100644
index 0000000..161ab3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/Test_if_eqz.java
@@ -0,0 +1,169 @@
+package dot.junit.opcodes.if_eqz;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_eqz.d.T_if_eqz_1;
+import dot.junit.opcodes.if_eqz.d.T_if_eqz_2;
+import dot.junit.opcodes.if_eqz.d.T_if_eqz_3;
+import dot.junit.opcodes.if_eqz.d.T_if_eqz_4;
+
+public class Test_if_eqz extends DxTestCase {
+
+    /**
+     * @title Argument = 5 and -5
+     */
+    public void testN1() {
+        T_if_eqz_1 t = new T_if_eqz_1();
+        /*
+         * Compare with 1234 to check that in case of failed comparison
+         * execution proceeds at the address following if_acmpeq instruction
+         */
+        assertEquals(1234, t.run(5));
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title Arguments = not null
+     */
+    public void testN2() {
+        T_if_eqz_2 t = new T_if_eqz_2();
+        String str = "abc";
+        assertEquals(1234, t.run(str));
+    }
+    
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_eqz_3 t = new T_if_eqz_3();
+        assertEquals(1234, t.run(3.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_eqz_1 t = new T_if_eqz_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_eqz_1 t = new T_if_eqz_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE
+     */
+    public void testB3() {
+        T_if_eqz_3 t = new T_if_eqz_3();
+        assertEquals(1234, t.run(Float.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Float.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_eqz_3 t = new T_if_eqz_3();
+        assertEquals(1234, t.run(Float.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB5() {
+        T_if_eqz_1 t = new T_if_eqz_1();
+        assertEquals(1, t.run(0));
+    }
+    
+    /**
+     * @title Compare with null
+     */
+    public void testB6() {
+        T_if_eqz_4 t = new T_if_eqz_4();
+        assertEquals(1, t.run(null));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  branch must not be 0
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_eqz.d.T_if_eqz_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.d
new file mode 100644
index 0000000..c44b870
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.d
@@ -0,0 +1,23 @@
+.source T_ifne_1.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-eqz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.java
new file mode 100644
index 0000000..69d7ec5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eqz.d;
+
+public class T_if_eqz_1 {
+
+    public int run(int a) {
+        return a == 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.d
new file mode 100644
index 0000000..8c415d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.d
@@ -0,0 +1,24 @@
+.source T_if_eqz_10.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-eqz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dfh
new file mode 100644
index 0000000..8720c5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dfh
@@ -0,0 +1,278 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 13a54087
+    87 40 A5 13 
+// parsed: offset 12, len 20: signature           : f2ad...6186
+    F2 AD 32 32 6C 56 2F 5F 0C 66 01 AD C1 B4 D3 5A E5 69 61 86 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_eqz_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 405 (0x000195) "V"
+    95 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 408 (0x000198) "Z"
+    98 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 411 (0x00019b) "ZI"
+    9B 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eqz_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-eqz v5, 0004 // +0x0004
+//@mod            38 05 04 00 
+            38 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 7A 2F 64 2F 54 5F 69 66 5F 65 71 7A 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_eqz_10.java"
+    10 54 5F 69 66 5F 65 71 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 405, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 408, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 411, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.d
new file mode 100644
index 0000000..af8ce95c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.d
@@ -0,0 +1,23 @@
+.source T_if_eqz_11.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-eqz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dfh
new file mode 100644
index 0000000..9776e0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dfh
@@ -0,0 +1,274 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4c653f4a
+    4A 3F 65 4C 
+// parsed: offset 12, len 20: signature           : 64c4...a261
+    64 C4 0B 66 1A 5A 66 6E F4 C8 FA 14 8C 1E 4F 57 1F 9A A2 61 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_eqz_11.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "Z"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "ZI"
+    93 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eqz_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_11.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_11.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-eqz v5, 0004 // +0x0004
+//@mod      38 05 04 00 
+            38 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 7A 2F 64 2F 54 5F 69 66 5F 65 71 7A 5F 31 31 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_eqz_11.java"
+    10 54 5F 69 66 5F 65 71 7A 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 403, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_11;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.d
new file mode 100644
index 0000000..2b44068
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.d
@@ -0,0 +1,23 @@
+.source T_ifne_2.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-eqz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.java
new file mode 100644
index 0000000..288a1e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eqz.d;
+
+public class T_if_eqz_2 {
+
+    public int run(String o) {
+        return o == null ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.d
new file mode 100644
index 0000000..84e6924
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.d
@@ -0,0 +1,23 @@
+.source T_ifne_3.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-eqz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.java
new file mode 100644
index 0000000..f328d0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_3.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eqz.d;
+
+public class T_if_eqz_3 {
+
+    public int run(float o) {
+        return o == 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.d
new file mode 100644
index 0000000..5d0c921
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.d
@@ -0,0 +1,23 @@
+.source T_ifne_4.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 6
+
+       if-eqz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.java
new file mode 100644
index 0000000..5d83f7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_4.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_eqz.d;
+
+public class T_if_eqz_4 {
+
+    public int run(Object o) {
+        return o == null ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.d
new file mode 100644
index 0000000..3ddc469
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_5.d
@@ -0,0 +1,23 @@
+.source T_ifne_5.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 6
+
+       if-eqz v6, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.d
new file mode 100644
index 0000000..ff120fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_6.d
@@ -0,0 +1,23 @@
+.source T_ifne_6.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       if-eqz v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.d
new file mode 100644
index 0000000..2d2ccb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_7.d
@@ -0,0 +1,23 @@
+.source T_ifne_7.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-eqz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.d
new file mode 100644
index 0000000..4ff0e6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.d
@@ -0,0 +1,23 @@
+.source T_if_eqz_9.java
+.class public dot.junit.opcodes.if_eqz.d.T_if_eqz_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-eqz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dfh
new file mode 100644
index 0000000..ee8a1452
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_eqz/d/T_if_eqz_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 090e3d64
+    64 3D 0E 09 
+// parsed: offset 12, len 20: signature           : ca45...4c5d
+    CA 45 28 5D 29 16 13 16 67 BC 32 35 F3 8A C7 62 46 28 4C 5D 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_eqz_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_eqz_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_eqz.d.T_if_eqz_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-eqz v5, 0004 // +0x0004
+//@mod      38 05 04 00        
+            38 05 04 01 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 65 71 7A 2F 64 2F 54 5F 69 66 5F 65 71 7A 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_eqz_9.java"
+    0F 54 5F 69 66 5F 65 71 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_eqz/d/T_if_eqz_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/Test_if_ge.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/Test_if_ge.java
new file mode 100644
index 0000000..5c22637
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/Test_if_ge.java
@@ -0,0 +1,176 @@
+package dot.junit.opcodes.if_ge;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_ge.d.T_if_ge_1;
+import dot.junit.opcodes.if_ge.d.T_if_ge_3;
+
+public class Test_if_ge extends DxTestCase {
+    
+    /**
+     * @title Case: 5 < 6
+     */
+    public void testN1() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title Case: 0x0f0e0d0c = 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Case: 5 > -5
+     */
+    public void testN3() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_ge_3 t = new T_if_ge_3();
+        assertEquals(1, t.run(1f, 1));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(0, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_ge_1 t = new T_if_ge_1();
+        assertEquals(1, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+     /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title  branch target shall 0
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ge.d.T_if_ge_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+   
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.d
new file mode 100644
index 0000000..1279bbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.d
@@ -0,0 +1,23 @@
+.source T_if_ge_1.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.java
new file mode 100644
index 0000000..b507e37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ge.d;
+
+public class T_if_ge_1 {
+
+    public int run(int a, int b) {
+        return a >= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.d
new file mode 100644
index 0000000..d02659a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.d
@@ -0,0 +1,24 @@
+.source T_if_ge_10.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ge v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.dfh
new file mode 100644
index 0000000..090fea5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_10.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 14003ffc
+    FC 3F 00 14 
+// parsed: offset 12, len 20: signature           : b8fa...6526
+    B8 FA D3 7A 8D D7 8E 82 0D 0E D1 33 C7 70 54 00 B1 30 65 26 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_ge_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ge_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ge v6, v7, 0004 // +0x0004
+//@mod            35 76 04 00 
+            35 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 2F 64 2F 54 5F 69 66 5F 67 65 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ge_10.java"
+    0F 54 5F 69 66 5F 67 65 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ge/d/T_if_ge_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.d
new file mode 100644
index 0000000..667364d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_if_ge_11.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.dfh
new file mode 100644
index 0000000..730462e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_11.dfh
@@ -0,0 +1,272 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_11.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 07f43ba4
+    A4 3B F4 07 
+// parsed: offset 12, len 20: signature           : 0ddb...f74e
+    0D DB 24 02 D1 3C 3B 83 6B 43 22 39 49 49 55 12 39 79 F7 4E 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 304 (0x000130) "<init>"
+    30 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 312 (0x000138) "I"
+    38 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 315 (0x00013b) "III"
+    3B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 320 (0x000140) "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+    40 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 360 (0x000168) "Ljava/lang/Object;"
+    68 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "T_if_ge_11.java"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "run"
+    90 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "III"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 296 (0x000128)
+    02 00 00 00 00 00 00 00 28 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_if_ge_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_11.run"
+    // parsed: offset 264, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 266, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: if-ge v6, v7, 0005 // +0x0005
+//@mod            35 76 05 00 
+            35 76 00 00 
+        // parsed: offset 284, len 4: |0002: const/16 v6, #int 1234 // #0x4d2
+            13 06 D2 04 
+        // parsed: offset 288, len 2: |0004: return v6
+            0F 06 
+        // parsed: offset 290, len 2: |0005: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 292, len 2: |0006: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 296, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 300, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 302, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 304, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 312, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 315, len 5: TYPE_STRING_DATA_ITEM [2] "III"
+    03 49 49 49 00 
+// parsed: offset 320, len 40: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 2F 64 2F 54 5F 69 66 5F 67 65 5F 31 31 3B 00 
+// parsed: offset 360, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 380, len 17: TYPE_STRING_DATA_ITEM [5] "T_if_ge_11.java"
+    0F 54 5F 69 66 5F 67 65 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ge/d/T_if_ge_11;"
+    // parsed: offset 405, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 409, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 410, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 413, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 416, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 417, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 419, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 296 (0x000128)
+        01 10 00 00 01 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 304 (0x000130)
+        02 20 00 00 08 00 00 00 30 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.d
new file mode 100644
index 0000000..af33b07
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_if_ge_2.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.java
new file mode 100644
index 0000000..64014ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.if_ge.d;
+
+public class T_if_ge_2 {
+
+    public int run(float a, float b) {
+        return a >= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.d
new file mode 100644
index 0000000..876dcdc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.d
@@ -0,0 +1,23 @@
+.source T_if_ge_3.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.java
new file mode 100644
index 0000000..d524e1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_3.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ge.d;
+
+public class T_if_ge_3 {
+
+    public int run(float a, int b) {
+        return a >= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.d
new file mode 100644
index 0000000..3593702
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_4.d
@@ -0,0 +1,23 @@
+.source T_if_ge_4.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ge v6, v8, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.d
new file mode 100644
index 0000000..ddf627e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_5.d
@@ -0,0 +1,23 @@
+.source T_if_ge_5.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-ge v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.d
new file mode 100644
index 0000000..74e3506
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_6.d
@@ -0,0 +1,23 @@
+.source T_if_ge_6.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-ge v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.d
new file mode 100644
index 0000000..b3559bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_7.d
@@ -0,0 +1,23 @@
+.source T_if_ge_7.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.limit regs 8
+
+       if-ge v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.d
new file mode 100644
index 0000000..254da33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.d
@@ -0,0 +1,23 @@
+.source T_if_ge_9.java
+.class public dot.junit.opcodes.if_ge.d.T_if_ge_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ge v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.dfh
new file mode 100644
index 0000000..3f4b044
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ge/d/T_if_ge_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ge/d/T_if_ge_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c6b54091
+    91 40 B5 C6 
+// parsed: offset 12, len 20: signature           : a65c...e5f5
+    A6 5C 79 D3 A9 EE BA 8C 74 66 B9 7A 38 6E 20 6C 12 E5 E5 F5 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_ge_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "Z"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "ZII"
+    90 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ge_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ge.d.T_if_ge_9.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ge v6, v7, 0004 // +0x0004
+//@mod      35 76 04 00 
+            35 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 39: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+    25 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 2F 64 2F 54 5F 69 66 5F 67 65 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 16: TYPE_STRING_DATA_ITEM [4] "T_if_ge_9.java"
+    0E 54 5F 69 66 5F 67 65 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ge/d/T_if_ge_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/Test_if_gez.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/Test_if_gez.java
new file mode 100644
index 0000000..da97922
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/Test_if_gez.java
@@ -0,0 +1,151 @@
+package dot.junit.opcodes.if_gez;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_gez.d.T_if_gez_1;
+import dot.junit.opcodes.if_gez.d.T_if_gez_2;
+
+public class Test_if_gez extends DxTestCase {
+    
+    /**
+     * @title Argument = 5
+     */
+    public void testN1() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1, t.run(5));
+    }
+
+    /**
+     * @title Argument = -5
+     */
+    public void testN2() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_gez_2 t = new T_if_gez_2();
+        assertEquals(1, t.run(1.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_gez_1 t = new T_if_gez_1();
+        assertEquals(1, t.run(0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gez.d.T_if_gez_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.d
new file mode 100644
index 0000000..85145e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.d
@@ -0,0 +1,23 @@
+.source T_if_gez_1.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.java
new file mode 100644
index 0000000..462ed6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gez.d;
+
+public class T_if_gez_1 {
+
+    public int run(int a) {
+        return a >= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.d
new file mode 100644
index 0000000..503c0be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.d
@@ -0,0 +1,23 @@
+.source T_if_gez_10.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.dfh
new file mode 100644
index 0000000..b4fa6dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_10.dfh
@@ -0,0 +1,274 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_10.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 5d7e4122
+    22 41 7E 5D 
+// parsed: offset 12, len 20: signature           : 9bea...7f9b
+    9B EA D8 28 0E 81 13 A4 C2 E3 5E 59 A7 CC B3 E4 1A 47 7F 9B 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_gez_10.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "Z"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "ZI"
+    93 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gez_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gez v5, 0004 // +0x0004
+//@mod      3B 05 04 00 
+            3B 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 7A 2F 64 2F 54 5F 69 66 5F 67 65 7A 5F 31 30 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_gez_10.java"
+    10 54 5F 69 66 5F 67 65 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 403, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gez/d/T_if_gez_10;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.d
new file mode 100644
index 0000000..3d0a858
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.d
@@ -0,0 +1,23 @@
+.source T_if_gez_2.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-gez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.java
new file mode 100644
index 0000000..55d7605
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gez.d;
+
+public class T_if_gez_2 {
+
+    public int run(float a) {
+        return a >= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.d
new file mode 100644
index 0000000..a4bda68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_3.d
@@ -0,0 +1,23 @@
+.source T_if_gez_3.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gez v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.d
new file mode 100644
index 0000000..4a60845
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_4.d
@@ -0,0 +1,23 @@
+.source T_if_gez_4.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-gez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.d
new file mode 100644
index 0000000..c3d88e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_5.d
@@ -0,0 +1,23 @@
+.source T_if_gez_5.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-gez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.d
new file mode 100644
index 0000000..666d59f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_6.d
@@ -0,0 +1,23 @@
+.source T_if_gez_6.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-gez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.d
new file mode 100644
index 0000000..9534ba0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_if_gez_7.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gez v0, Label9
+       const/16 v0, 1234
+       return v0
+
+Label9:
+       const/4 v0, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.d
new file mode 100644
index 0000000..f1df2d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.d
@@ -0,0 +1,23 @@
+.source T_if_gez_8.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.dfh
new file mode 100644
index 0000000..307f59d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_8.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 743e41c9
+    C9 41 3E 74 
+// parsed: offset 12, len 20: signature           : 8137...c1a7
+    81 37 BE DD 96 E5 E3 AE 8E C3 09 D0 A5 41 3C 1A AC EC C1 A7 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_gez_8.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gez_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_8.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gez v5, 0004 // +0x0004
+//@mod      3B 05 04 00 
+            3B 05 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 7A 2F 64 2F 54 5F 69 66 5F 67 65 7A 5F 38 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gez_8.java"
+    0F 54 5F 69 66 5F 67 65 7A 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gez/d/T_if_gez_8;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.d
new file mode 100644
index 0000000..a0b7545
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.d
@@ -0,0 +1,24 @@
+.source T_if_gez_9.java
+.class public dot.junit.opcodes.if_gez.d.T_if_gez_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.dfh
new file mode 100644
index 0000000..4c24707
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gez/d/T_if_gez_9.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gez/d/T_if_gez_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : f5534081
+    81 40 53 F5 
+// parsed: offset 12, len 20: signature           : 01ee...5008
+    01 EE F6 9D DC E2 4D 51 1B 8B 52 BC 5D A5 3C 9C 1B F0 50 08 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 366 (0x00016e) "Ljava/lang/Object;"
+    6E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 386 (0x000182) "T_if_gez_9.java"
+    82 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "V"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "Z"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 409 (0x000199) "ZI"
+    99 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 413 (0x00019d) "run"
+    9D 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gez_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 418 (0x0001a2)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A2 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gez.d.T_if_gez_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gez v5, 0004 // +0x0004
+//@mod            3B 05 04 00 
+            3B 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 65 7A 2F 64 2F 54 5F 69 66 5F 67 65 7A 5F 39 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 386, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gez_9.java"
+    0F 54 5F 69 66 5F 67 65 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 406, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 409, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 413, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gez/d/T_if_gez_9;"
+    // parsed: offset 418, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 419, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 420, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 421, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 423, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 426, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 429, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 430, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 418 (0x0001a2)
+        00 20 00 00 01 00 00 00 A2 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/Test_if_gt.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/Test_if_gt.java
new file mode 100644
index 0000000..862ba4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/Test_if_gt.java
@@ -0,0 +1,175 @@
+package dot.junit.opcodes.if_gt;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_gt.d.T_if_gt_1;
+import dot.junit.opcodes.if_gt.d.T_if_gt_3;
+
+public class Test_if_gt extends DxTestCase {
+
+    /**
+     * @title Case: 5 < 6
+     */
+    public void testN1() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(5, 6));
+    }
+
+    /**
+     * @title Case: 0x0f0e0d0c = 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Case: 5 > -5
+     */
+    public void testN3() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_gt_3 t = new T_if_gt_3();
+        assertEquals(1, t.run(1f, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1, t.run(0, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_gt_1 t = new T_if_gt_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a 
+     * @title  branch target shall not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gt.d.T_if_gt_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.d
new file mode 100644
index 0000000..293c1ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.d
@@ -0,0 +1,23 @@
+.source T_if_gt_1.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.java
new file mode 100644
index 0000000..b71142f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gt.d;
+
+public class T_if_gt_1 {
+
+    public int run(int a, int b) {
+        return a > b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.d
new file mode 100644
index 0000000..7dd9ab7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.d
@@ -0,0 +1,24 @@
+.source T_if_gt_10.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/4 v6, 0
+       return v6
+
+Label11:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.dfh
new file mode 100644
index 0000000..6d0aaad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_10.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 0e2c42e5
+    E5 42 2C 0E 
+// parsed: offset 12, len 20: signature           : eb64...07d7
+    EB 64 9E 9B AE C0 F1 D7 E7 75 AE 37 77 BF 2B BB 7A D1 07 D7 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_gt_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gt_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gt v6, v7, 0004 // +0x0004
+//@mod            36 76 04 00 
+            36 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 2F 64 2F 54 5F 69 66 5F 67 74 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gt_10.java"
+    0F 54 5F 69 66 5F 67 74 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gt/d/T_if_gt_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.d
new file mode 100644
index 0000000..13fa794
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_if_gt_11.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.dfh
new file mode 100644
index 0000000..9822137
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_11.dfh
@@ -0,0 +1,278 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_11.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6c2e423c
+    3C 42 2E 6C 
+// parsed: offset 12, len 20: signature           : 5443...b674
+    54 43 D6 BD FA E8 4D 02 23 47 91 E4 D9 A6 90 BB B7 BD B6 74 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 312 (0x000138) "<init>"
+    38 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 320 (0x000140) "F"
+    40 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 323 (0x000143) "I"
+    43 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 326 (0x000146) "IFF"
+    46 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 331 (0x00014b) "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+    4B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 371 (0x000173) "Ljava/lang/Object;"
+    73 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 391 (0x000187) "T_if_gt_11.java"
+    87 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 408 (0x000198) "V"
+    98 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 411 (0x00019b) "run"
+    9B 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "F"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "I"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "Ljava/lang/Object;"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "V"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "IFF"
+//     return_type_idx: 1 (0x000001) "I"
+//     parameters_off: 304 (0x000130)
+    03 00 00 00 01 00 00 00 30 01 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    07 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 8 (0x000008) "run"
+    02 00 00 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 3 (0x000003)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    03 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 2 "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 6 "T_if_gt_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 416 (0x0001a0)
+//     static_values_off: 0 (0x000000)
+    02 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 A0 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_11.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_11.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gt v6, v7, 0005 // +0x0005
+//@mod            36 76 05 00 
+            36 76 00 00 
+        // parsed: offset 292, len 4: |0002: const/16 v6, #int 1234 // #0x4d2
+            13 06 D2 04 
+        // parsed: offset 296, len 2: |0004: return v6
+            0F 06 
+        // parsed: offset 298, len 2: |0005: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 300, len 2: |0006: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 302, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 304, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 308, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 310, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 312, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 320, len 3: TYPE_STRING_DATA_ITEM [1] "F"
+    01 46 00 
+// parsed: offset 323, len 3: TYPE_STRING_DATA_ITEM [2] "I"
+    01 49 00 
+// parsed: offset 326, len 5: TYPE_STRING_DATA_ITEM [3] "IFF"
+    03 49 46 46 00 
+// parsed: offset 331, len 40: TYPE_STRING_DATA_ITEM [4] "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 2F 64 2F 54 5F 69 66 5F 67 74 5F 31 31 3B 00 
+// parsed: offset 371, len 20: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 391, len 17: TYPE_STRING_DATA_ITEM [6] "T_if_gt_11.java"
+    0F 54 5F 69 66 5F 67 74 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 408, len 3: TYPE_STRING_DATA_ITEM [7] "V"
+    01 56 00 
+// parsed: offset 411, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gt/d/T_if_gt_11;"
+    // parsed: offset 416, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 417, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 418, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 419, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 421, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 424, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 426, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 427, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 428, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 430, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 304 (0x000130)
+        01 10 00 00 01 00 00 00 30 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 312 (0x000138)
+        02 20 00 00 09 00 00 00 38 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 416 (0x0001a0)
+        00 20 00 00 01 00 00 00 A0 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.d
new file mode 100644
index 0000000..30e3b81
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_if_gt_2.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.java
new file mode 100644
index 0000000..136d619
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.if_gt.d;
+
+public class T_if_gt_2 {
+
+    public int run(float a, float b) {
+        return a > b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.d
new file mode 100644
index 0000000..75d4d17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.d
@@ -0,0 +1,23 @@
+.source T_if_gt_3.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.java
new file mode 100644
index 0000000..9d53767
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_3.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gt.d;
+
+public class T_if_gt_3 {
+
+    public int run(float a, int b) {
+        return a > b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.d
new file mode 100644
index 0000000..f1ebef1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_4.d
@@ -0,0 +1,23 @@
+.source T_if_gt_4.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-gt v7, v8, Label11
+       const/16 v7, 1234
+       return v7
+
+Label11:
+       const/4 v7, 1
+       return v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.d
new file mode 100644
index 0000000..829291b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_5.d
@@ -0,0 +1,23 @@
+.source T_if_gt_5.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-gt v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.d
new file mode 100644
index 0000000..39b3541
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_6.d
@@ -0,0 +1,23 @@
+.source T_if_gt_6.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-gt v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.d
new file mode 100644
index 0000000..88b8364
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_7.d
@@ -0,0 +1,23 @@
+.source T_if_gt_7.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.d
new file mode 100644
index 0000000..8325322
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_if_gt_8.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-gt v6, v0, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.d
new file mode 100644
index 0000000..198d870
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.d
@@ -0,0 +1,23 @@
+.source T_if_gt_9.java
+.class public dot.junit.opcodes.if_gt.d.T_if_gt_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-gt v6, v7, Label11
+       const/4 v6, 0
+       return v6
+
+Label11:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.dfh
new file mode 100644
index 0000000..a9549db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gt/d/T_if_gt_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gt/d/T_if_gt_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c6c73e51
+    51 3E C7 C6 
+// parsed: offset 12, len 20: signature           : e023...c1e9
+    E0 23 56 87 13 06 4B 95 E5 A7 64 7B 18 5C 6F 2D BC 12 C1 E9 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_gt_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "Z"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "ZII"
+    90 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gt_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gt.d.T_if_gt_9.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gt v6, v7, 0004 // +0x0004
+//@mod      36 76 04 00 
+            36 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 39: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+    25 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 2F 64 2F 54 5F 69 66 5F 67 74 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 16: TYPE_STRING_DATA_ITEM [4] "T_if_gt_9.java"
+    0E 54 5F 69 66 5F 67 74 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gt/d/T_if_gt_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/Test_if_gtz.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/Test_if_gtz.java
new file mode 100644
index 0000000..86a5535
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/Test_if_gtz.java
@@ -0,0 +1,151 @@
+package dot.junit.opcodes.if_gtz;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_gtz.d.T_if_gtz_1;
+import dot.junit.opcodes.if_gtz.d.T_if_gtz_2;
+
+public class Test_if_gtz extends DxTestCase {
+
+    /**
+     * @title Argument = 5
+     */
+    public void testN1() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1, t.run(5));
+    }
+
+    /**
+     * @title Argument = -5
+     */
+    public void testN2() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1234, t.run(-5));
+    }
+
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_gtz_2 t = new T_if_gtz_2();
+        assertEquals(1, t.run(1.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_gtz_1 t = new T_if_gtz_1();
+        assertEquals(1234, t.run(0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title  branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_gtz.d.T_if_gtz_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.d
new file mode 100644
index 0000000..2207436
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_1.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gtz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.java
new file mode 100644
index 0000000..cca881f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gtz.d;
+
+public class T_if_gtz_1 {
+
+    public int run(int a) {
+        return a > 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.d
new file mode 100644
index 0000000..4119a6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.d
@@ -0,0 +1,24 @@
+.source T_if_gtz_10.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gtz v5, Label8
+       const/4 v0, 0
+       return v0
+
+Label8:
+       nop
+       const v0, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dfh
new file mode 100644
index 0000000..5007f63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dfh
@@ -0,0 +1,278 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 63564126
+    26 41 56 63 
+// parsed: offset 12, len 20: signature           : a735...e471
+    A7 35 3A 24 84 99 A8 9A B8 55 11 8C 64 FC 37 6F C2 8A E4 71 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_gtz_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 405 (0x000195) "V"
+    95 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 408 (0x000198) "Z"
+    98 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 411 (0x00019b) "ZI"
+    9B 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gtz_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gtz v5, 0004 // +0x0004
+//@mod            3C 05 04 00 
+            3C 05 00 00 
+        // parsed: offset 292, len 2: |0002: const/4 v0, #int 0 // #0x0
+            12 00 
+        // parsed: offset 294, len 2: |0003: return v0
+            0F 00 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 6: |0005: const v0, #float 0.000000 // #0x00000000 int
+            14 00 00 00 00 00 
+        // parsed: offset 304, len 2: |0008: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 7A 2F 64 2F 54 5F 69 66 5F 67 74 7A 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_gtz_10.java"
+    10 54 5F 69 66 5F 67 74 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 405, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 408, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 411, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.d
new file mode 100644
index 0000000..b57c6ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_2.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-gtz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.java
new file mode 100644
index 0000000..ea1def0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_gtz.d;
+
+public class T_if_gtz_2 {
+
+    public int run(float a) {
+        return a > 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.d
new file mode 100644
index 0000000..c2db4b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_3.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_3.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gtz v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.d
new file mode 100644
index 0000000..98e01e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_4.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_4.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-gtz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.d
new file mode 100644
index 0000000..29f8800
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_5.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_5.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-gtz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.d
new file mode 100644
index 0000000..a91668e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_6.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_6.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-gtz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.d
new file mode 100644
index 0000000..71a5bfc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_if_gtz_7.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-gtz v0, Label9
+       const/16 v0, 1234
+       return v0
+
+Label9:
+       const/4 v0, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.d
new file mode 100644
index 0000000..5bf3d9ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.d
@@ -0,0 +1,24 @@
+.source T_if_gtz_8.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gtz v5, Label8
+       const/4 v0, 0
+       return v0
+
+Label8:
+       nop
+       const/4 v0, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dfh
new file mode 100644
index 0000000..2af60bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dfh
@@ -0,0 +1,276 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 00484033
+    33 40 48 00 
+// parsed: offset 12, len 20: signature           : d58a...b651
+    D5 8A 12 27 F2 10 E0 5C 52 C9 68 FB 6C 6D 37 15 4D E8 B6 51 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 310 (0x000136) "<init>"
+    36 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 318 (0x00013e) "I"
+    3E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 362 (0x00016a) "Ljava/lang/Object;"
+    6A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 382 (0x00017e) "T_if_gtz_8.java"
+    7E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 399 (0x00018f) "V"
+    8F 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 402 (0x000192) "Z"
+    92 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 405 (0x000195) "ZI"
+    95 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 409 (0x000199) "run"
+    99 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 304 (0x000130)
+    07 00 00 00 04 00 00 00 30 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gtz_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 414 (0x00019e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_8.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gtz v5, 0004 // +0x0004
+//@mod            3C 05 04 00 
+            3C 05 04 01 
+        // parsed: offset 292, len 2: |0002: const/4 v0, #int 0 // #0x0
+            12 00 
+        // parsed: offset 294, len 2: |0003: return v0
+            0F 00 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: const/4 v0, #int 0 // #0x0
+            12 00 
+        // parsed: offset 300, len 2: |0006: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 302, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 304, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 308, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 310, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 318, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 321, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 7A 2F 64 2F 54 5F 69 66 5F 67 74 7A 5F 38 3B 00 
+// parsed: offset 362, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 382, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gtz_8.java"
+    0F 54 5F 69 66 5F 67 74 7A 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 402, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 405, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 409, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_8;"
+    // parsed: offset 414, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 415, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 416, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 417, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 419, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 422, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 425, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 426, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 304 (0x000130)
+        01 10 00 00 01 00 00 00 30 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 310 (0x000136)
+        02 20 00 00 09 00 00 00 36 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 414 (0x00019e)
+        00 20 00 00 01 00 00 00 9E 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.d
new file mode 100644
index 0000000..08e8ff9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.d
@@ -0,0 +1,23 @@
+.source T_if_gtz_9.java
+.class public dot.junit.opcodes.if_gtz.d.T_if_gtz_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-gtz v5, Label8
+       const/4 v0, 0
+       return v0
+
+Label8:
+       const v0, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dfh
new file mode 100644
index 0000000..1c600fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_gtz/d/T_if_gtz_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 910f41e3
+    E3 41 0F 91 
+// parsed: offset 12, len 20: signature           : 897e...e923
+    89 7E 66 D4 A6 63 A4 C3 FF C5 35 EC 5B 7C 65 85 1B E2 E9 23 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 310 (0x000136) "<init>"
+    36 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 318 (0x00013e) "I"
+    3E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 321 (0x000141) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+    41 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 362 (0x00016a) "Ljava/lang/Object;"
+    6A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 382 (0x00017e) "T_if_gtz_9.java"
+    7E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 399 (0x00018f) "V"
+    8F 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 402 (0x000192) "Z"
+    92 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 405 (0x000195) "ZI"
+    95 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 409 (0x000199) "run"
+    99 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 304 (0x000130)
+    07 00 00 00 04 00 00 00 30 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_gtz_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 414 (0x00019e)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9E 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_gtz.d.T_if_gtz_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-gtz v5, 0004 // +0x0004
+//@mod            3C 05 04 00 
+            3C 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v0, #int 0 // #0x0
+            12 00 
+        // parsed: offset 294, len 2: |0003: return v0
+            0F 00 
+        // parsed: offset 296, len 6: |0004: const v0, #float 0.000000 // #0x00000000 int
+            14 00 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 304, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 308, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 310, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 318, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 321, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 67 74 7A 2F 64 2F 54 5F 69 66 5F 67 74 7A 5F 39 3B 00 
+// parsed: offset 362, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 382, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_gtz_9.java"
+    0F 54 5F 69 66 5F 67 74 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 402, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 405, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 409, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_gtz/d/T_if_gtz_9;"
+    // parsed: offset 414, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 415, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 416, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 417, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 419, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 422, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 425, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 426, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 304 (0x000130)
+        01 10 00 00 01 00 00 00 30 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 310 (0x000136)
+        02 20 00 00 09 00 00 00 36 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 414 (0x00019e)
+        00 20 00 00 01 00 00 00 9E 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/Test_if_le.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/Test_if_le.java
new file mode 100644
index 0000000..852324b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/Test_if_le.java
@@ -0,0 +1,176 @@
+package dot.junit.opcodes.if_le;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_le.d.T_if_le_1;
+import dot.junit.opcodes.if_le.d.T_if_le_11;
+
+public class Test_if_le extends DxTestCase {
+    
+    /**
+     * @title Case: 5 < 6
+     */
+    public void testN1() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title Case: 0x0f0e0d0c = 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Case: 5 > -5
+     */
+    public void testN3() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_le_11 t = new T_if_le_11();
+        assertEquals(1, t.run(1, 1f));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1234, t.run(0, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_le_1 t = new T_if_le_1();
+        assertEquals(1, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a 
+     * @title branch target shall not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_le.d.T_if_le_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.d
new file mode 100644
index 0000000..a9fbd14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.d
@@ -0,0 +1,23 @@
+.source T_if_le_1.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.java
new file mode 100644
index 0000000..65d5da6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_le.d;
+
+public class T_if_le_1 {
+
+    public int run(int a, int b) {
+        return a <= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.d
new file mode 100644
index 0000000..7c9ca12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.d
@@ -0,0 +1,24 @@
+.source T_if_le_10.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-le v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.dfh
new file mode 100644
index 0000000..9c55965
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_10.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 0713407a
+    7A 40 13 07 
+// parsed: offset 12, len 20: signature           : eb53...56c4
+    EB 53 CD DC C5 02 DC 05 C8 B3 F8 3D 81 26 1E 13 2F 96 56 C4 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_le_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_le_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-le v6, v7, 0004 // +0x0004
+//@mod            37 76 04 00 
+            37 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 2F 64 2F 54 5F 69 66 5F 6C 65 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_le_10.java"
+    0F 54 5F 69 66 5F 6C 65 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_le/d/T_if_le_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.d
new file mode 100644
index 0000000..aaeecc9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.d
@@ -0,0 +1,23 @@
+.source T_if_le_11.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.java
new file mode 100644
index 0000000..b92d796
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_11.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_le.d;
+
+public class T_if_le_11 {
+
+    public int run(int a, float b) {
+        return a <= b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.d
new file mode 100644
index 0000000..2f9f581
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.d
@@ -0,0 +1,23 @@
+.source T_if_le_12.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.dfh
new file mode 100644
index 0000000..a8735cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_12.dfh
@@ -0,0 +1,272 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_12.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : cae53e73
+    73 3E E5 CA 
+// parsed: offset 12, len 20: signature           : 28b0...6742
+    28 B0 39 0C B7 33 C6 C9 90 4E 13 C6 72 E1 E3 3E 9A 8A 67 42 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 304 (0x000130) "<init>"
+    30 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 312 (0x000138) "I"
+    38 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 315 (0x00013b) "III"
+    3B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 320 (0x000140) "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+    40 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 360 (0x000168) "Ljava/lang/Object;"
+    68 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "T_if_le_12.java"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "run"
+    90 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "III"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 296 (0x000128)
+    02 00 00 00 00 00 00 00 28 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_if_le_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_12.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_12.run"
+    // parsed: offset 264, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 266, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 7
+        07 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: if-le v6, v7, 0005 // +0x0005
+//@mod            37 76 05 00 
+            37 76 00 00 
+        // parsed: offset 284, len 4: |0002: const/16 v6, #int 1234 // #0x4d2
+            13 06 D2 04 
+        // parsed: offset 288, len 2: |0004: return v6
+            0F 06 
+        // parsed: offset 290, len 2: |0005: const/4 v6, #int 1 // #0x1
+            12 16 
+        // parsed: offset 292, len 2: |0006: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 296, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 300, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 302, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 304, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 312, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 315, len 5: TYPE_STRING_DATA_ITEM [2] "III"
+    03 49 49 49 00 
+// parsed: offset 320, len 40: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 2F 64 2F 54 5F 69 66 5F 6C 65 5F 31 32 3B 00 
+// parsed: offset 360, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 380, len 17: TYPE_STRING_DATA_ITEM [5] "T_if_le_12.java"
+    0F 54 5F 69 66 5F 6C 65 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_le/d/T_if_le_12;"
+    // parsed: offset 405, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 409, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 410, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 413, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 416, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 417, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 419, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 296 (0x000128)
+        01 10 00 00 01 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 304 (0x000130)
+        02 20 00 00 08 00 00 00 30 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_3.d
new file mode 100644
index 0000000..e389992
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_3.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_if_le_3.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_4.d
new file mode 100644
index 0000000..514c26b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_4.d
@@ -0,0 +1,23 @@
+.source T_if_le_4.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-le v6, v8, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_5.d
new file mode 100644
index 0000000..a70e43f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_5.d
@@ -0,0 +1,23 @@
+.source T_if_le_5.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-le v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+       
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_6.d
new file mode 100644
index 0000000..fb8bb3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_6.d
@@ -0,0 +1,23 @@
+.source T_if_le_6.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-le v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_7.d
new file mode 100644
index 0000000..cf76654
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_7.d
@@ -0,0 +1,23 @@
+.source T_if_le_7.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.limit regs 8
+
+       if-le v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_8.d
new file mode 100644
index 0000000..34562f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_if_le_8.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-le v6, v0, Label11
+       const/16 v6, 1234
+       return v6
+       
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.d
new file mode 100644
index 0000000..99fa7c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.d
@@ -0,0 +1,23 @@
+.source T_if_le_9.java
+.class public dot.junit.opcodes.if_le.d.T_if_le_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-le v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.dfh
new file mode 100644
index 0000000..51da483
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_le/d/T_if_le_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_le/d/T_if_le_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 9b4b41ee
+    EE 41 4B 9B 
+// parsed: offset 12, len 20: signature           : eaf2...5695
+    EA F2 77 CB B7 40 83 E4 FA CE 5D C9 DE E0 C3 20 0C 85 56 95 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_le_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "Z"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "ZII"
+    90 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_le_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_le.d.T_if_le_9.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-le v6, v7, 0004 // +0x0004
+//@mod      37 76 04 00 
+            37 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 39: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+    25 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 2F 64 2F 54 5F 69 66 5F 6C 65 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 16: TYPE_STRING_DATA_ITEM [4] "T_if_le_9.java"
+    0E 54 5F 69 66 5F 6C 65 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_le/d/T_if_le_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/Test_if_lez.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/Test_if_lez.java
new file mode 100644
index 0000000..4f72938
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/Test_if_lez.java
@@ -0,0 +1,152 @@
+package dot.junit.opcodes.if_lez;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_lez.d.T_if_lez_1;
+import dot.junit.opcodes.if_lez.d.T_if_lez_2;
+
+public class Test_if_lez extends DxTestCase {
+
+    /**
+     * @title Argument = 5
+     */
+    public void testN1() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1234, t.run(5));
+    }
+
+    /**
+     * @title Argument = -5
+     */
+    public void testN2() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_lez_2 t = new T_if_lez_2();
+        assertEquals(1, t.run(-1.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_lez_1 t = new T_if_lez_1();
+        assertEquals(1, t.run(0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lez.d.T_if_lez_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.d
new file mode 100644
index 0000000..6429797
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.d
@@ -0,0 +1,23 @@
+.source T_if_lez_1.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-lez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.java
new file mode 100644
index 0000000..b3d7441
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_lez.d;
+
+public class T_if_lez_1 {
+
+    public int run(int a) {
+        return a <= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.d
new file mode 100644
index 0000000..82a8268
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.d
@@ -0,0 +1,23 @@
+.source T_if_lez_10.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-lez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.dfh
new file mode 100644
index 0000000..66ce09b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_10.dfh
@@ -0,0 +1,274 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_10.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ca1e4159
+    59 41 1E CA 
+// parsed: offset 12, len 20: signature           : 43ef...3a58
+    43 EF DB CD B8 45 E7 FA DE 03 53 F0 4C 14 8B A8 BE 13 3A 58 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_lez_10.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "Z"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "ZI"
+    93 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lez_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lez v5, 0004 // +0x0004
+//@mod      3D 05 04 00 
+            3D 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 7A 2F 64 2F 54 5F 69 66 5F 6C 65 7A 5F 31 30 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_lez_10.java"
+    10 54 5F 69 66 5F 6C 65 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 403, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lez/d/T_if_lez_10;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.d
new file mode 100644
index 0000000..cbe7f34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.d
@@ -0,0 +1,23 @@
+.source T_if_lez_2.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-lez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.java
new file mode 100644
index 0000000..37ce198
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_lez.d;
+
+public class T_if_lez_2 {
+
+    public int run(float a) {
+        return a <= 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.d
new file mode 100644
index 0000000..4efd27a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_3.d
@@ -0,0 +1,23 @@
+.source T_if_lez_3.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-lez v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.d
new file mode 100644
index 0000000..985254d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_4.d
@@ -0,0 +1,23 @@
+.source T_if_lez_4.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-lez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.d
new file mode 100644
index 0000000..705c855
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_5.d
@@ -0,0 +1,23 @@
+.source T_if_lez_5.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-lez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.d
new file mode 100644
index 0000000..596f1d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_6.d
@@ -0,0 +1,23 @@
+.source T_if_lez_6.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-lez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.d
new file mode 100644
index 0000000..129b4bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_if_lez_7.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-lez v0, Label9
+       const/16 v0, 1234
+       return v0
+
+Label9:
+       const/4 v0, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.d
new file mode 100644
index 0000000..b21ab3e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.d
@@ -0,0 +1,23 @@
+.source T_if_lez_8.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-lez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.dfh
new file mode 100644
index 0000000..d1e27e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_8.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 65b03e79
+    79 3E B0 65 
+// parsed: offset 12, len 20: signature           : 3e9a...b229
+    3E 9A CC 34 9B 91 4F 6B 11 37 FE 19 56 10 75 54 A2 9B B2 29 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_lez_8.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lez_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_8.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lez v5, 0004 // +0x0004
+//@mod      3D 05 04 00 
+            3D 05 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 7A 2F 64 2F 54 5F 69 66 5F 6C 65 7A 5F 38 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_lez_8.java"
+    0F 54 5F 69 66 5F 6C 65 7A 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lez/d/T_if_lez_8;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.d
new file mode 100644
index 0000000..5efdeba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.d
@@ -0,0 +1,24 @@
+.source T_if_lez_9.java
+.class public dot.junit.opcodes.if_lez.d.T_if_lez_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-lez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.dfh
new file mode 100644
index 0000000..4ea81be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lez/d/T_if_lez_9.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_lez/d/T_if_lez_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4845421a
+    1A 42 45 48 
+// parsed: offset 12, len 20: signature           : 9aec...318f
+    9A EC E7 D4 FF 76 22 57 6F 40 A8 ED 6A 91 9F 1B EF 80 31 8F 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 366 (0x00016e) "Ljava/lang/Object;"
+    6E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 386 (0x000182) "T_if_lez_9.java"
+    82 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "V"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "Z"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 409 (0x000199) "ZI"
+    99 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 413 (0x00019d) "run"
+    9D 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lez_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 418 (0x0001a2)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A2 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lez.d.T_if_lez_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lez v5, 0004 // +0x0004
+//@mod            3D 05 04 00 
+            3D 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 65 7A 2F 64 2F 54 5F 69 66 5F 6C 65 7A 5F 39 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 386, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_lez_9.java"
+    0F 54 5F 69 66 5F 6C 65 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 406, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 409, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 413, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lez/d/T_if_lez_9;"
+    // parsed: offset 418, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 419, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 420, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 421, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 423, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 426, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 429, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 430, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 418 (0x0001a2)
+        00 20 00 00 01 00 00 00 A2 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/Test_if_lt.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/Test_if_lt.java
new file mode 100644
index 0000000..26a3faa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/Test_if_lt.java
@@ -0,0 +1,175 @@
+package dot.junit.opcodes.if_lt;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_lt.d.T_if_lt_1;
+import dot.junit.opcodes.if_lt.d.T_if_lt_11;
+
+public class Test_if_lt extends DxTestCase {
+
+    /**
+     * @title Case: 5 < 6
+     */
+    public void testN1() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title Case: 0x0f0e0d0c = 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Case: 5 > -5
+     */
+    public void testN3() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(5, -5));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_lt_11 t = new T_if_lt_11();
+        assertEquals(1, t.run(1, 1f));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(0, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_if_lt_1 t = new T_if_lt_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a 
+     * @title branch target shall not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_lt.d.T_if_lt_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.d
new file mode 100644
index 0000000..c81d8b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_1.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-lt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.java
new file mode 100644
index 0000000..5a2e8e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_lt.d;
+
+public class T_if_lt_1 {
+
+    public int run(int a, int b) {
+        return a < b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.d
new file mode 100644
index 0000000..4821984
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.d
@@ -0,0 +1,24 @@
+.source T_if_lt_10.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-lt v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.dfh
new file mode 100644
index 0000000..bb2ed5a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_10.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c726416b
+    6B 41 26 C7 
+// parsed: offset 12, len 20: signature           : 7db8...3ca9
+    7D B8 1E 21 EA 87 C8 52 ED CF 14 C9 4B F4 E9 12 D4 32 3C A9 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_lt_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lt_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lt v6, v7, 0004 // +0x0004
+//@mod            34 76 04 00 
+            34 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 2F 64 2F 54 5F 69 66 5F 6C 74 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_lt_10.java"
+    0F 54 5F 69 66 5F 6C 74 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lt/d/T_if_lt_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.d
new file mode 100644
index 0000000..7e80ecf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_11.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 8
+
+       if-lt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.java
new file mode 100644
index 0000000..cc3323f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_11.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_lt.d;
+
+public class T_if_lt_11 {
+
+    public int run(int a, float b) {
+        return a < b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.d
new file mode 100644
index 0000000..f9083cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.d
@@ -0,0 +1,23 @@
+.source T_if_lt_12.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-lt v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.dfh
new file mode 100644
index 0000000..aed0448
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_12.dfh
@@ -0,0 +1,276 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_12.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 69884064
+    64 40 88 69 
+// parsed: offset 12, len 20: signature           : 48bf...a511
+    48 BF EF 03 CC F9 FF EF 11 EC 1C 2E E4 83 0B D9 37 34 A5 11 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_lt_12.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "Z"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 402 (0x000192) "ZII"
+    92 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lt_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_12.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_12.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lt v6, v7, 0004 // +0x0004
+//@mod            34 76 04 00 
+            34 76 00 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 2F 64 2F 54 5F 69 66 5F 6C 74 5F 31 32 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_lt_12.java"
+    0F 54 5F 69 66 5F 6C 74 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 402, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lt/d/T_if_lt_12;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.d
new file mode 100644
index 0000000..94546c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_if_icmpge_2.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       if-lt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.java
new file mode 100644
index 0000000..14e148c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.if_lt.d;
+
+public class T_if_lt_2 {
+
+    public int run(float a, float b) {
+        return a < b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.d
new file mode 100644
index 0000000..9a93ac6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_4.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_4.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-lt v6, v8, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.d
new file mode 100644
index 0000000..7d77ad9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_5.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_5.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-lt v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.d
new file mode 100644
index 0000000..9d1910e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_6.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_6.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-lt v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.d
new file mode 100644
index 0000000..8d126c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_7.d
@@ -0,0 +1,23 @@
+.source T_if_icmpge_7.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;I)I
+.limit regs 8
+
+       if-lt v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.d
new file mode 100644
index 0000000..8c2f2ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.d
@@ -0,0 +1,23 @@
+.source T_if_lt_9.java
+.class public dot.junit.opcodes.if_lt.d.T_if_lt_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-lt v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.dfh
new file mode 100644
index 0000000..10b38ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_lt/d/T_if_lt_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_lt/d/T_if_lt_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b45f4033
+    33 40 5F B4 
+// parsed: offset 12, len 20: signature           : 4cb8...7b33
+    4C B8 1D 60 D7 F6 8E D3 C9 42 C8 6B 13 3F AD C6 EB 57 7B 33 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_lt_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "Z"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 400 (0x000190) "ZII"
+    90 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_lt_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_lt.d.T_if_lt_9.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-lt v6, v7, 0004 // +0x0004
+//@mod      34 76 04 00 
+            34 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 39: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+    25 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 2F 64 2F 54 5F 69 66 5F 6C 74 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 16: TYPE_STRING_DATA_ITEM [4] "T_if_lt_9.java"
+    0E 54 5F 69 66 5F 6C 74 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 400, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_lt/d/T_if_lt_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/Test_if_ltz.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/Test_if_ltz.java
new file mode 100644
index 0000000..b70d16e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/Test_if_ltz.java
@@ -0,0 +1,150 @@
+package dot.junit.opcodes.if_ltz;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_ltz.d.T_if_ltz_1;
+import dot.junit.opcodes.if_ltz.d.T_if_ltz_2;
+
+public class Test_if_ltz extends DxTestCase {
+
+    /**
+     * @title Argument = 5
+     */
+    public void testN1() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1234, t.run(5));
+    }
+
+    /**
+     * @title Argument = -5
+     */
+    public void testN2() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_if_ltz_2 t = new T_if_ltz_2();
+        assertEquals(1234, t.run(1.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_ltz_1 t = new T_if_ltz_1();
+        assertEquals(1234, t.run(0));
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ltz.d.T_if_ltz_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.d
new file mode 100644
index 0000000..7022a90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_1.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-ltz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.java
new file mode 100644
index 0000000..7e666cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ltz.d;
+
+public class T_if_ltz_1 {
+
+    public int run(int a) {
+        return a < 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.d
new file mode 100644
index 0000000..aa01356
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_2.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-ltz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.java
new file mode 100644
index 0000000..0c0480e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ltz.d;
+
+public class T_if_ltz_2 {
+
+    public int run(float a) {
+        return a < 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.d
new file mode 100644
index 0000000..d2405ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_3.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_3.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-ltz v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.d
new file mode 100644
index 0000000..804ef88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_4.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_4.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-ltz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.d
new file mode 100644
index 0000000..af8e741
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_5.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_5.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-ltz v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.d
new file mode 100644
index 0000000..c56730f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_6.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_6.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-ltz v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.d
new file mode 100644
index 0000000..f14a551
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_7.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-ltz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dfh
new file mode 100644
index 0000000..afb4652
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dfh
@@ -0,0 +1,272 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_7.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7337400f
+    0F 40 37 73 
+// parsed: offset 12, len 20: signature           : 0250...bf7f
+    02 50 04 7A E3 17 74 3C 13 73 F6 D7 EA 11 9E F4 EC 4E BF 7F 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_ltz_7.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ltz_7.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_7.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_7.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ltz v5, 0004 // +0x0004
+//@mod      3A 05 04 00 
+            3A 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 7A 2F 64 2F 54 5F 69 66 5F 6C 74 7A 5F 37 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ltz_7.java"
+    0F 54 5F 69 66 5F 6C 74 7A 5F 37 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_7;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.d
new file mode 100644
index 0000000..650e299
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.d
@@ -0,0 +1,23 @@
+.source T_if_ltz_8.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-ltz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dfh
new file mode 100644
index 0000000..dc3b594
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6a9b3f87
+    87 3F 9B 6A 
+// parsed: offset 12, len 20: signature           : 2cbc...44c1
+    2C BC B6 C9 37 D4 49 42 95 BD 36 89 BC B0 07 51 07 6A 44 C1 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_ltz_8.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ltz_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_8.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ltz v5, 0004 // +0x0004
+//@mod      3A 05 04 00 
+            3A 05 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 7A 2F 64 2F 54 5F 69 66 5F 6C 74 7A 5F 38 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ltz_8.java"
+    0F 54 5F 69 66 5F 6C 74 7A 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_8;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.d
new file mode 100644
index 0000000..3b4a3dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.d
@@ -0,0 +1,24 @@
+.source T_if_ltz_9.java
+.class public dot.junit.opcodes.if_ltz.d.T_if_ltz_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-ltz v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dfh
new file mode 100644
index 0000000..dc5146c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ltz/d/T_if_ltz_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 9e5c41e6
+    E6 41 5C 9E 
+// parsed: offset 12, len 20: signature           : c9e3...0f3f
+    C9 E3 71 AB 73 15 F5 E7 72 4D 3A A7 77 F4 E9 3F FF 4D 0F 3F 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 366 (0x00016e) "Ljava/lang/Object;"
+    6E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 386 (0x000182) "T_if_ltz_9.java"
+    82 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "V"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "Z"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 409 (0x000199) "ZI"
+    99 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 413 (0x00019d) "run"
+    9D 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ltz_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 418 (0x0001a2)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A2 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ltz.d.T_if_ltz_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ltz v5, 0004 // +0x0004
+//@mod            3A 05 04 00 
+            3A 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6C 74 7A 2F 64 2F 54 5F 69 66 5F 6C 74 7A 5F 39 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 386, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ltz_9.java"
+    0F 54 5F 69 66 5F 6C 74 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 406, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 409, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 413, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ltz/d/T_if_ltz_9;"
+    // parsed: offset 418, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 419, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 420, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 421, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 423, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 426, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 428, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 429, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 430, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 418 (0x0001a2)
+        00 20 00 00 01 00 00 00 A2 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/Test_if_ne.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/Test_if_ne.java
new file mode 100644
index 0000000..610fe96
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/Test_if_ne.java
@@ -0,0 +1,205 @@
+package dot.junit.opcodes.if_ne;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_ne.d.T_if_ne_1;
+import dot.junit.opcodes.if_ne.d.T_if_ne_2;
+import dot.junit.opcodes.if_ne.d.T_if_ne_4;
+
+public class Test_if_ne extends DxTestCase {
+
+    /**
+     * @title Arguments = 5, 6
+     */
+    public void testN1() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1, t.run(5, 6));
+    }
+
+    /**
+     * @title Arguments = 0x0f0e0d0c, 0x0f0e0d0c
+     */
+    public void testN2() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1234, t.run(0x0f0e0d0c, 0x0f0e0d0c));
+    }
+
+    /**
+     * @title Arguments = 5, -5
+     */
+    public void testN3() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1, t.run(5, -5));
+    }
+
+    /**
+     * @title Arguments = 0x01001234, 0x1234
+     */
+    public void testN4() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1, t.run(0x01001234, 0x1234));
+    }
+    
+    /**
+     * @title compare references
+     */
+    public void testN5() {
+        T_if_ne_2 t = new T_if_ne_2();
+        String a = "a";
+        String b = "b";
+        assertEquals(1, t.run(a, b));
+    }
+
+    /**
+     * @title compare references
+     */
+    public void testN6() {
+        T_if_ne_2 t = new T_if_ne_2();
+        String a = "a";
+        assertEquals(1234, t.run(a, a));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of int and float makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_if_ne_4 t = new T_if_ne_4();
+        assertEquals(1, t.run(1f, 1));
+    }  
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1234, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1234, t.run(Integer.MIN_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 1234567
+     */
+    public void testB3() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1, t.run(0, 1234567));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB4() {
+        T_if_ne_1 t = new T_if_ne_1();
+        assertEquals(1234, t.run(0, 0));
+    }
+    
+    /**
+     * @title Compare with null
+     */
+    public void testB5() {
+        T_if_ne_2 t = new T_if_ne_2();
+        String a = "a";
+        assertEquals(1, t.run(null, a));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title  branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a 
+     * @title branch target shall not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_ne.d.T_if_ne_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.d
new file mode 100644
index 0000000..cb84784
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.d
@@ -0,0 +1,23 @@
+.source T_if_ne_1.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ne v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.java
new file mode 100644
index 0000000..ebc05ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ne.d;
+
+public class T_if_ne_1 {
+
+    public int run(int a, int b) {
+        return a != b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.d
new file mode 100644
index 0000000..f42d830
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.d
@@ -0,0 +1,23 @@
+.source T_if_ne_10.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ne v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.dfh
new file mode 100644
index 0000000..f5f9427
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_10.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 095c418d
+    8D 41 5C 09 
+// parsed: offset 12, len 20: signature           : c237...7d40
+    C2 37 DB 94 22 A2 D1 8C 42 64 8C F7 AF 4F F0 C2 C2 D3 7D 40 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_ne_10.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "Z"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 402 (0x000192) "ZII"
+    92 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ne_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_10.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ne v6, v7, 0004 // +0x0004
+//@mod      33 76 04 00 
+            33 76 04 01            
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 2F 64 2F 54 5F 69 66 5F 6E 65 5F 31 30 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ne_10.java"
+    0F 54 5F 69 66 5F 6E 65 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 402, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ne/d/T_if_ne_10;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.d
new file mode 100644
index 0000000..65bb0d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.d
@@ -0,0 +1,24 @@
+.source T_if_ne_11.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ne v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       const v6, 0
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.dfh
new file mode 100644
index 0000000..8b5c5e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_11.dfh
@@ -0,0 +1,280 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c3f03ff3
+    F3 3F F0 C3 
+// parsed: offset 12, len 20: signature           : 1786...89ee
+    17 86 0D 00 7F F4 86 BF 36 21 B8 93 62 57 3D EA B7 59 89 EE 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 316 (0x00013c) "<init>"
+    3C 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 324 (0x000144) "I"
+    44 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 327 (0x000147) "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+    47 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_ne_11.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 407 (0x000197) "Z"
+    97 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "ZII"
+    9A 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ne_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_11.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_11.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ne v6, v7, 0004 // +0x0004
+//@mod            33 76 04 00 
+            33 76 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 6: |0004: const v6, #float 0.000000 // #0x00000000 int
+            14 06 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 314, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 316, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 324, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 327, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 2F 64 2F 54 5F 69 66 5F 6E 65 5F 31 31 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ne_11.java"
+    0F 54 5F 69 66 5F 6E 65 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 407, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ne/d/T_if_ne_11;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 316 (0x00013c)
+        02 20 00 00 09 00 00 00 3C 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.d
new file mode 100644
index 0000000..0893fa4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.d
@@ -0,0 +1,23 @@
+.source T_if_ne_12.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)Z
+.limit regs 8
+
+       if-ne v6, v7, Label10
+       const/4 v6, 0
+       return v6
+
+Label10:
+       nop
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.dfh
new file mode 100644
index 0000000..e78249f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_12.dfh
@@ -0,0 +1,276 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_12.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/if_ne/d/T_if_ne_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 37603d62
+    62 3D 60 37 
+// parsed: offset 12, len 20: signature           : 24e7...4311
+    24 E7 8D 35 83 34 1E 83 9C DE 27 13 02 76 B3 A3 53 37 43 11 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_ne_12.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "Z"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 402 (0x000192) "ZII"
+    92 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZII"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_ne_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_12.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_ne.d.T_if_ne_12.run"
+    // parsed: offset 272, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 274, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-ne v6, v7, 0004 // +0x0004
+//@mod            33 76 04 00 
+            33 76 00 00 
+        // parsed: offset 292, len 2: |0002: const/4 v6, #int 0 // #0x0
+            12 06 
+        // parsed: offset 294, len 2: |0003: return v6
+            0F 06 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v6
+            0F 06 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+    // parsed: offset 306, len 2: type_item [1] type_idx: 0
+        00 00 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 40: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+    26 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 2F 64 2F 54 5F 69 66 5F 6E 65 5F 31 32 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_ne_12.java"
+    0F 54 5F 69 66 5F 6E 65 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 402, len 5: TYPE_STRING_DATA_ITEM [7] "ZII"
+    03 5A 49 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_ne/d/T_if_ne_12;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 308 (0x000134)
+        02 20 00 00 09 00 00 00 34 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.d
new file mode 100644
index 0000000..039f954
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.d
@@ -0,0 +1,23 @@
+.source T_if_ne_2.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;Ljava/lang/String;)I
+.limit regs 8
+
+       if-ne v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.java
new file mode 100644
index 0000000..79c7519
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ne.d;
+
+public class T_if_ne_2 {
+
+    public int run(String a, String b) {
+        return a != b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.d
new file mode 100644
index 0000000..aaa66e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.d
@@ -0,0 +1,23 @@
+.source T_if_ne_4.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       if-ne v6, v7, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.java
new file mode 100644
index 0000000..fbd1049
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_4.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_ne.d;
+
+public class T_if_ne_4 {
+
+    public int run(float a, int b) {
+        return a != b ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.d
new file mode 100644
index 0000000..4bfefaa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_5.d
@@ -0,0 +1,23 @@
+.source T_if_ne_5.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ne v6, v8, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.d
new file mode 100644
index 0000000..5e57f66
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_7.d
@@ -0,0 +1,23 @@
+.source T_if_ne_7.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       if-ne v5, v6, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.d
new file mode 100644
index 0000000..0001b04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_8.d
@@ -0,0 +1,23 @@
+.source T_if_ne_8.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       if-ne v5, v7, Label11
+       const/16 v5, 1234
+       return v5
+
+Label11:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.d
new file mode 100644
index 0000000..4f3f107
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_ne/d/T_if_ne_9.d
@@ -0,0 +1,23 @@
+.source T_if_ne_9.java
+.class public dot.junit.opcodes.if_ne.d.T_if_ne_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       if-ne v6, v5, Label11
+       const/16 v6, 1234
+       return v6
+
+Label11:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/Test_if_nez.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/Test_if_nez.java
new file mode 100644
index 0000000..1283f37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/Test_if_nez.java
@@ -0,0 +1,159 @@
+package dot.junit.opcodes.if_nez;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.if_nez.d.T_if_nez_1;
+import dot.junit.opcodes.if_nez.d.T_if_nez_2;
+import dot.junit.opcodes.if_nez.d.T_if_nez_3;
+import dot.junit.opcodes.if_nez.d.T_if_nez_4;
+
+public class Test_if_nez extends DxTestCase {
+    
+    /**
+     * @title Argument = 5 and -5
+     */
+    public void testN1() {
+        T_if_nez_1 t = new T_if_nez_1();
+        assertEquals(1, t.run(5));
+        assertEquals(1, t.run(-5));
+    }
+
+    /**
+     * @title Arguments = null
+     */
+    public void testN2() {
+        T_if_nez_2 t = new T_if_nez_2();
+        String str = null;
+        assertEquals(1234, t.run(str));
+    }
+    
+    /**
+     * @title Arguments = not null
+     */
+    public void testN3() {
+        T_if_nez_2 t = new T_if_nez_2();
+        String str = "abc";
+        assertEquals(1, t.run(str));
+    }
+    
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_if_nez_3 t = new T_if_nez_3();
+        assertEquals(1, t.run(3.123f));
+    }
+    
+    /**
+     * @title Arguments = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_if_nez_1 t = new T_if_nez_1();
+        assertEquals(1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_if_nez_1 t = new T_if_nez_1();
+        assertEquals(1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 0
+     */
+    public void testB3() {
+        T_if_nez_1 t = new T_if_nez_1();
+        assertEquals(1234, t.run(0));
+    }
+    
+    /**
+     * @title Compare reference with null
+     */
+    public void testB4() {
+        T_if_nez_4 t = new T_if_nez_4();
+        assertEquals(1234, t.run(null));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+
+    /**
+     * @constraint A6 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A6 
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title branch must not be 0
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.if_nez.d.T_if_nez_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.d
new file mode 100644
index 0000000..da15ff2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.d
@@ -0,0 +1,23 @@
+.source T_ifne_1.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-nez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.java
new file mode 100644
index 0000000..7e8aab3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_nez.d;
+
+public class T_if_nez_1 {
+
+    public int run(int a) {
+        return a != 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.d
new file mode 100644
index 0000000..4a5a9a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.d
@@ -0,0 +1,24 @@
+.source T_if_nez_10.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-nez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       const v5, 0
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.dfh
new file mode 100644
index 0000000..c690b98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_10.dfh
@@ -0,0 +1,278 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_10.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_10.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : f7d6442e
+    2E 44 D6 F7 
+// parsed: offset 12, len 20: signature           : b285...f2c1
+    B2 85 AD 8B CF 5D F1 BB 04 91 E9 46 C9 64 A2 AE E4 DA F2 C1 
+// parsed: offset 32, len 4: file_size           : 572
+    3C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 436 (0x0001b4)
+    B4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 314 (0x00013a) "<init>"
+    3A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 322 (0x000142) "I"
+    42 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 325 (0x000145) "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+    45 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 367 (0x00016f) "Ljava/lang/Object;"
+    6F 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 387 (0x000183) "T_if_nez_10.java"
+    83 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 405 (0x000195) "V"
+    95 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 408 (0x000198) "Z"
+    98 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 411 (0x00019b) "ZI"
+    9B 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 415 (0x00019f) "run"
+    9F 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 308 (0x000134)
+    07 00 00 00 04 00 00 00 34 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_nez_10.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 420 (0x0001a4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 A4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_10.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_10.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 9
+        09 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-nez v5, 0004 // +0x0004
+//@mod            39 05 04 00 
+            39 05 05 00 
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 6: |0004: const v5, #float 0.000000 // #0x00000000 int
+            14 05 00 00 00 00 
+        // parsed: offset 302, len 2: |0007: nop // spacer
+            00 00 
+        // parsed: offset 304, len 2: |0008: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// parsed: offset 306, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 308, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 312, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 314, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 322, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 325, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 7A 2F 64 2F 54 5F 69 66 5F 6E 65 7A 5F 31 30 3B 00 
+// parsed: offset 367, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 387, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_nez_10.java"
+    10 54 5F 69 66 5F 6E 65 7A 5F 31 30 2E 6A 61 76 61 00 
+// parsed: offset 405, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 408, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 411, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 415, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_nez/d/T_if_nez_10;"
+    // parsed: offset 420, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 421, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 422, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 423, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 424, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 425, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 428, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 430, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 431, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 432, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 434, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 436, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 440, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 452, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 464, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 476, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 488, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 308 (0x000134)
+        01 10 00 00 01 00 00 00 34 01 00 00 
+    // parsed: offset 536, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 314 (0x00013a)
+        02 20 00 00 09 00 00 00 3A 01 00 00 
+    // parsed: offset 548, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 20 00 00 01 00 00 00 A4 01 00 00 
+    // parsed: offset 560, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 436 (0x0001b4)
+        00 10 00 00 01 00 00 00 B4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.d
new file mode 100644
index 0000000..81ef2ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.d
@@ -0,0 +1,23 @@
+.source T_if_nez_11.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-nez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.dfh
new file mode 100644
index 0000000..07373f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_11.dfh
@@ -0,0 +1,274 @@
+// Processing '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_11.dex'...
+// Opened '/home/julia/workspace/dalvikNew/out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a76043b4
+    B4 43 60 A7 
+// parsed: offset 12, len 20: signature           : 1a2c...f8f3
+    1A 2C DB A0 C2 B5 CC A7 79 C0 8C CA A6 EE F6 C4 35 81 F8 F3 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 359 (0x000167) "Ljava/lang/Object;"
+    67 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 379 (0x00017b) "T_if_nez_11.java"
+    7B 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "Z"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "ZI"
+    93 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 407 (0x000197) "run"
+    97 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_nez_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 412 (0x00019c)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9C 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_11.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_11.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-nez v5, 0004 // +0x0004
+//@mod      39 05 04 00 
+            39 05 00 00            
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 42: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+    28 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 7A 2F 64 2F 54 5F 69 66 5F 6E 65 7A 5F 31 31 3B 00 
+// parsed: offset 359, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 379, len 18: TYPE_STRING_DATA_ITEM [4] "T_if_nez_11.java"
+    10 54 5F 69 66 5F 6E 65 7A 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 403, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 407, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_nez/d/T_if_nez_11;"
+    // parsed: offset 412, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 413, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 414, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 415, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 20 00 00 01 00 00 00 9C 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.d
new file mode 100644
index 0000000..d95004a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.d
@@ -0,0 +1,23 @@
+.source T_ifne_2.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/String;)I
+.limit regs 6
+
+       if-nez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.java
new file mode 100644
index 0000000..802b021
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_2.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_nez.d;
+
+public class T_if_nez_2 {
+
+    public int run(String o) {
+        return o != null ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.d
new file mode 100644
index 0000000..ea90b8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.d
@@ -0,0 +1,23 @@
+.source T_ifne_3.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 6
+
+       if-nez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.java
new file mode 100644
index 0000000..149b181e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_3.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_nez.d;
+
+public class T_if_nez_3 {
+
+    public int run(float a) {
+        return a != 0 ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.d
new file mode 100644
index 0000000..efe46b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.d
@@ -0,0 +1,23 @@
+.source T_ifne_4.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)I
+.limit regs 6
+
+       if-nez v5, Label9
+       const/16 v5, 1234
+       return v5
+
+Label9:
+       const/4 v5, 1
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.java
new file mode 100644
index 0000000..96b98a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_4.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.if_nez.d;
+
+public class T_if_nez_4 {
+
+    public int run(Object o) {
+        return o != null ? 1 : 1234;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.d
new file mode 100644
index 0000000..8640ec1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_5.d
@@ -0,0 +1,23 @@
+.source T_ifne_5.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 6
+
+       if-nez v6, Label9
+       const/16 v6, 1234
+       return v6
+
+Label9:
+       const/4 v6, 1
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.d
new file mode 100644
index 0000000..67348ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_6.d
@@ -0,0 +1,23 @@
+.source T_ifne_6.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 6
+
+       if-nez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.d
new file mode 100644
index 0000000..b22102e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_7.d
@@ -0,0 +1,23 @@
+.source T_ifne_7.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 6
+
+       if-nez v4, Label9
+       const/16 v4, 1234
+       return v4
+
+Label9:
+       const/4 v4, 1
+       return v4
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.d
new file mode 100644
index 0000000..5ea760a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.d
@@ -0,0 +1,23 @@
+.source T_if_nez_9.java
+.class public dot.junit.opcodes.if_nez.d.T_if_nez_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 6
+
+       if-nez v5, Label8
+       const/4 v5, 0
+       return v5
+
+Label8:
+       nop
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.dfh
new file mode 100644
index 0000000..acd19bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/if_nez/d/T_if_nez_9.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/if_nez/d/T_if_nez_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 533b414c
+    4C 41 3B 53 
+// parsed: offset 12, len 20: signature           : a2dd...7edb
+    A2 DD 9C 8A FB 23 5C 93 89 55 98 BF E0 6A 76 51 CB 17 7E DB 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 306 (0x000132) "<init>"
+    32 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 314 (0x00013a) "I"
+    3A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+    3D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 358 (0x000166) "Ljava/lang/Object;"
+    66 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 378 (0x00017a) "T_if_nez_9.java"
+    7A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "V"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "Z"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "ZI"
+    91 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 405 (0x000195) "run"
+    95 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 6 (0x000006) "Z"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 7 (0x000007) "ZI"
+//     return_type_idx: 4 (0x000004) "Z"
+//     parameters_off: 300 (0x00012c)
+    07 00 00 00 04 00 00 00 2C 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_if_nez_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_9.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.if_nez.d.T_if_nez_9.run"
+    // parsed: offset 272, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: if-nez v5, 0004 // +0x0004
+//@mod      39 05 04 00 
+            39 05 04 01
+        // parsed: offset 292, len 2: |0002: const/4 v5, #int 0 // #0x0
+            12 05 
+        // parsed: offset 294, len 2: |0003: return v5
+            0F 05 
+        // parsed: offset 296, len 2: |0004: nop // spacer
+            00 00 
+        // parsed: offset 298, len 2: |0005: return v5
+            0F 05 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 300, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 304, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 306, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 314, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 317, len 41: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+    27 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 66 5F 6E 65 7A 2F 64 2F 54 5F 69 66 5F 6E 65 7A 5F 39 3B 00 
+// parsed: offset 358, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 378, len 17: TYPE_STRING_DATA_ITEM [4] "T_if_nez_9.java"
+    0F 54 5F 69 66 5F 6E 65 7A 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 398, len 3: TYPE_STRING_DATA_ITEM [6] "Z"
+    01 5A 00 
+// parsed: offset 401, len 4: TYPE_STRING_DATA_ITEM [7] "ZI"
+    02 5A 49 00 
+// parsed: offset 405, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/if_nez/d/T_if_nez_9;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 272 (0x000110)
+                90 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 300 (0x00012c)
+        01 10 00 00 01 00 00 00 2C 01 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 306 (0x000132)
+        02 20 00 00 09 00 00 00 32 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/TestStubs.java
new file mode 100644
index 0000000..07bb886
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget;
+
+public class TestStubs {
+    // used by testVFE4
+    private int TestStubField = 50;
+    // ussed by testVFE15
+    protected int TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/Test_iget.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/Test_iget.java
new file mode 100644
index 0000000..50658ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/Test_iget.java
@@ -0,0 +1,311 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget.d.T_iget_1;
+import dot.junit.opcodes.iget.d.T_iget_11;
+import dot.junit.opcodes.iget.d.T_iget_12;
+import dot.junit.opcodes.iget.d.T_iget_13;
+import dot.junit.opcodes.iget.d.T_iget_2;
+import dot.junit.opcodes.iget.d.T_iget_21;
+import dot.junit.opcodes.iget.d.T_iget_5;
+import dot.junit.opcodes.iget.d.T_iget_6;
+import dot.junit.opcodes.iget.d.T_iget_7;
+import dot.junit.opcodes.iget.d.T_iget_8;
+import dot.junit.opcodes.iget.d.T_iget_9;
+
+public class Test_iget extends DxTestCase {
+    
+    /**
+     * @title type - int
+     */
+    public void testN1() {
+        T_iget_1 t = new T_iget_1();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title type - float
+     */
+    public void testN2() {
+        T_iget_2 t = new T_iget_2();
+        assertEquals(123f, t.run());
+    }
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_1
+        //@uses dot.junit.opcodes.iget.d.T_iget_11
+        T_iget_11 t = new T_iget_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_9 t = new T_iget_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B13 
+     * @title read integer from long field - only field with same name but 
+     * different type exist
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible private field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_6
+        //@uses dot.junit.opcodes.iget.TestStubs
+        try {
+            new T_iget_6().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_12
+        //@uses dot.junit.opcodes.iget.d.T_iget_1
+        try {
+            new T_iget_12().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for boolean fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read protected field of unrelated class.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_21
+        //@uses dot.junit.opcodes.iget.TestStubs
+        try {
+            new T_iget_21().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint A11
+     * @title Attempt to read static field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget.d.T_iget_5
+        //@uses dot.junit.opcodes.iget.TestStubs
+        try {
+            new T_iget_5().run();
+            fail("expected an IncompatibleClassChangeError exception");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget.d.T_iget_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.d
new file mode 100644
index 0000000..cac6528
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_1.java
+.class public dot.junit.opcodes.iget.d.T_iget_1
+.super java/lang/Object
+
+.field public  i1 I
+.field protected  p1 I
+.field private  pvt1 I
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const/4 v0, 5
+       iput v0, v1, dot.junit.opcodes.iget.d.T_iget_1.i1 I
+
+       const/16 v0, 10
+       iput v0, v1, dot.junit.opcodes.iget.d.T_iget_1.p1 I
+
+       const/16 v0, 20
+       iput v0, v1, dot.junit.opcodes.iget.d.T_iget_1.pvt1 I
+       
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_1.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.java
new file mode 100644
index 0000000..1ce655a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget.d;
+
+public class T_iget_1 {
+    public  int i1 = 5;
+    protected  int p1 = 10;
+    private  int pvt1 = 20;
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.d
new file mode 100644
index 0000000..6e64e3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_11.java
+.class public dot.junit.opcodes.iget.d.T_iget_11
+.super dot/junit/opcodes/iget/d/T_iget_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget/d/T_iget_1/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_1.p1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.java
new file mode 100644
index 0000000..9d6b376
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget.d;
+
+public class T_iget_11 extends T_iget_1 {
+
+    public int run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.d
new file mode 100644
index 0000000..312dd9c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_12.java
+.class public dot.junit.opcodes.iget.d.T_iget_12
+.super dot/junit/opcodes/iget/d/T_iget_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget/d/T_iget_1/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_1.pvt1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.java
new file mode 100644
index 0000000..b9f40ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget.d;
+
+public class T_iget_12 extends T_iget_1 {
+
+    @Override
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.d
new file mode 100644
index 0000000..eed73b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_13.java
+.class public dot.junit.opcodes.iget.d.T_iget_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_13.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.java
new file mode 100644
index 0000000..1038f56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget.d;
+
+public class T_iget_13 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_14.d
new file mode 100644
index 0000000..faa6271
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_14.java
+.class public dot.junit.opcodes.iget.d.T_iget_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_15.d
new file mode 100644
index 0000000..d50305b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_15.java
+.class public dot.junit.opcodes.iget.d.T_iget_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_16.d
new file mode 100644
index 0000000..8a5253b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_16.java
+.class public dot.junit.opcodes.iget.d.T_iget_16
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_16.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_17.d
new file mode 100644
index 0000000..69d1af4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_17.java
+.class public dot.junit.opcodes.iget.d.T_iget_17
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_18.d
new file mode 100644
index 0000000..c081e55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_18.java
+.class public dot.junit.opcodes.iget.d.T_iget_18
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_19.d
new file mode 100644
index 0000000..a555e94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_19.java
+.class public dot.junit.opcodes.iget.d.T_iget_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.d
new file mode 100644
index 0000000..bf07640
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_2.java
+.class public dot.junit.opcodes.iget.d.T_iget_2
+.super java/lang/Object
+
+.field public  val F
+
+.method  <clinit>()V
+.limit regs 2
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const v0, 123.0
+       iput v0, v1, dot.junit.opcodes.iget.d.T_iget_2.val F
+       
+       return-void
+.end method
+
+.method public run()F
+.limit regs 4
+
+       iget v1, v3, dot.junit.opcodes.iget.d.T_iget_2.val F
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.java
new file mode 100644
index 0000000..3efa19d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget.d;
+
+public class T_iget_2 {
+
+    public  float val = 123.0f;
+    
+    public float run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_20.d
new file mode 100644
index 0000000..b34faae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_20.java
+.class public dot.junit.opcodes.iget.d.T_iget_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v0, v2, dot.junit.opcodes.iget.d.T_iget_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.d
new file mode 100644
index 0000000..569458b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_21.java
+.class public dot.junit.opcodes.iget.d.T_iget_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget/TestStubs/<init>()V
+
+       iget v1, v0, dot.junit.opcodes.iget.TestStubs.TestStubProtectedField I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.java
new file mode 100644
index 0000000..31db5f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget.d;
+
+public class T_iget_21 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_3.d
new file mode 100644
index 0000000..f362d0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_3.java
+.class public dot.junit.opcodes.iget.d.T_iget_3
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget v3, v2, dot.junit.opcodes.iget.d.T_iget_3.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_30.d
new file mode 100644
index 0000000..3564c81
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_30.java
+.class public dot.junit.opcodes.iget.d.T_iget_30
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget/d/T_iget_30
+    iget v1, v0, dot.junit.opcodes.iget.d.T_iget_30.st_i1 I
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.d
new file mode 100644
index 0000000..8336a2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_4.java
+.class public dot.junit.opcodes.iget.d.T_iget_4
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_4.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.dfh
new file mode 100644
index 0000000..c29f935
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget/d/T_iget_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget/d/T_iget_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 385d3b6c
+    6C 3B 5D 38 
+// parsed: offset 12, len 20: signature           : bbc1...00f4
+    BB C1 79 16 63 A5 BB 13 9D 24 11 CB 85 1F A6 17 C0 39 00 F4 
+// parsed: offset 32, len 4: file_size           : 544
+    20 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 408 (0x000198)
+    98 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 296
+    28 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "I"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/iget/d/T_iget_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 344 (0x000158) "Ljava/lang/Object;"
+    58 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 364 (0x00016c) "T_iget_4.java"
+    6C 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 379 (0x00017b) "V"
+    7B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 382 (0x00017e) "i1"
+    7E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 386 (0x000182) "run"
+    82 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget/d/T_iget_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iget/d/T_iget_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 391 (0x000187)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 87 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget.d.T_iget_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget.d.T_iget_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget v1, v2, Ldot/junit/opcodes/iget/d/T_iget_4;.i1:I // field@0000
+//@mod            52 21 00 00 
+            52 21 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 307, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget/d/T_iget_4;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 2F 64 2F 54 5F 69 67 65 74 5F 34 3B 00 
+// parsed: offset 344, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 364, len 15: TYPE_STRING_DATA_ITEM [4] "T_iget_4.java"
+    0D 54 5F 69 67 65 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 379, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 382, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 386, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget/d/T_iget_4;"
+    // parsed: offset 391, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 392, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 393, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 394, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 395, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 396, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 397, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 398, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 401, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 403, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 404, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 405, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 407, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 408, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 412, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 424, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 436, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 448, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 460, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 472, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 484, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 496, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 508, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 391 (0x000187)
+        00 20 00 00 01 00 00 00 87 01 00 00 
+    // parsed: offset 532, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 10 00 00 01 00 00 00 98 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.d
new file mode 100644
index 0000000..7a7c3ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_5.java
+.class public dot.junit.opcodes.iget.d.T_iget_5
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_5.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.java
new file mode 100644
index 0000000..053f013
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget.d;
+
+public class T_iget_5 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.d
new file mode 100644
index 0000000..8ea70c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_6.java
+.class public dot.junit.opcodes.iget.d.T_iget_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget/TestStubs/<init>()V
+
+       iget v1, v0, dot.junit.opcodes.iget.TestStubs.TestStubField I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.java
new file mode 100644
index 0000000..efb61d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget.d;
+
+public class T_iget_6 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.d
new file mode 100644
index 0000000..a68b0f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_7.java
+.class public dot.junit.opcodes.iget.d.T_iget_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_7no_class.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.java
new file mode 100644
index 0000000..54b848f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget.d;
+
+public class T_iget_7 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.d
new file mode 100644
index 0000000..9fc3b75
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_8.java
+.class public dot.junit.opcodes.iget.d.T_iget_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       iget v1, v2, dot.junit.opcodes.iget.d.T_iget_8.i1N I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.java
new file mode 100644
index 0000000..249b4d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget.d;
+
+public class T_iget_8 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.d
new file mode 100644
index 0000000..268398c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_9.java
+.class public dot.junit.opcodes.iget.d.T_iget_9
+.super java/lang/Object
+
+.field public  val F
+
+.method  <clinit>()V
+.limit regs 2
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()F
+.limit regs 4
+
+       const v0, 0
+       iget v1, v0, dot.junit.opcodes.iget.d.T_iget_9.val F
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.java
new file mode 100644
index 0000000..440ad6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget/d/T_iget_9.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget.d;
+
+public class T_iget_9 {
+
+    public  float val = 123.0f;
+    
+    public float run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/TestStubs.java
new file mode 100644
index 0000000..8dcd427
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_boolean;
+
+public class TestStubs {
+    // used by testVFE4
+    private boolean TestStubField = true;
+    // used by testVFE15
+    protected boolean TestStubProtectedField = true;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/Test_iget_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/Test_iget_boolean.java
new file mode 100644
index 0000000..b23f330
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/Test_iget_boolean.java
@@ -0,0 +1,299 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_11;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_12;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_13;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_21;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_5;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_6;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_7;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_8;
+import dot.junit.opcodes.iget_boolean.d.T_iget_boolean_9;
+
+public class Test_iget_boolean extends DxTestCase {
+    
+    /**
+     * @title get boolean from field 
+     */
+    public void testN1() {
+        T_iget_boolean_1 t = new T_iget_boolean_1();
+        assertEquals(true, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_11
+        T_iget_boolean_11 t = new T_iget_boolean_11();
+        assertEquals(true, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_boolean_9 t = new T_iget_boolean_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+   
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B13 
+     * @title read boolean from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_boolean_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_6
+        //@uses dot.junit.opcodes.iget_boolean.TestStubs
+        try {
+            new T_iget_boolean_6().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_boolean_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_boolean_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_12
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1
+        try {
+            new T_iget_boolean_12().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_boolean shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * @constraint B1 
+     * @title iget_boolean shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_21
+        //@uses dot.junit.opcodes.iget_boolean.TestStubs
+        try {
+            new T_iget_boolean_21().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_boolean.d.T_iget_boolean_5
+        //@uses dot.junit.opcodes.iget_boolean.TestStubs
+        try {
+            new T_iget_boolean_5().run();
+            fail("expected an IncompatibleClassChangeError exception");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_boolean.d.T_iget_boolean_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.d
new file mode 100644
index 0000000..23b0a93
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_1.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1
+.super java/lang/Object
+
+.field public  i1 Z
+.field protected  p1 Z
+.field private  pvt1 Z
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const/4 v0, 1
+       iput-boolean v0, v1, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.i1 Z
+
+       const/16 v0, 1
+       iput-boolean v0, v1, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.p1 Z
+
+       const/16 v0, 1
+       iput-boolean v0, v1, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.pvt1 Z
+       
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.java
new file mode 100644
index 0000000..b23b780
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_1 {
+    public boolean i1 = true;
+    protected boolean p1 = true;
+    private boolean pvt1 = true;
+    
+    public boolean run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.d
new file mode 100644
index 0000000..540ecc5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_11.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_11
+.super dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.p1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.java
new file mode 100644
index 0000000..2b2423e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_11 extends T_iget_boolean_1 {
+
+    public boolean run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.d
new file mode 100644
index 0000000..e0a918f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_12.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_12
+.super dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_boolean/d/T_iget_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_1.pvt1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.java
new file mode 100644
index 0000000..5af996f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_12 extends T_iget_boolean_1 {
+
+    @Override
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.d
new file mode 100644
index 0000000..50ad238
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_13.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_13.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.java
new file mode 100644
index 0000000..b652090
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_13 {
+
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.d
new file mode 100644
index 0000000..38a56f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_14.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.d
new file mode 100644
index 0000000..9b165d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_15.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.d
new file mode 100644
index 0000000..8eb7f27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_16.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.d
new file mode 100644
index 0000000..499c796
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_17.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_17
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.d
new file mode 100644
index 0000000..ab97074
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_18.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_18
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.d
new file mode 100644
index 0000000..2909f36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_19.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.d
new file mode 100644
index 0000000..e37f360
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_20.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v0, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.d
new file mode 100644
index 0000000..c59f39d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_21.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_boolean/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_boolean/TestStubs/<init>()V
+
+       iget-boolean v1, v0, dot.junit.opcodes.iget_boolean.TestStubs.TestStubProtectedField Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.java
new file mode 100644
index 0000000..74e2da1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_21 {
+
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.d
new file mode 100644
index 0000000..7b6f6f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_3.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_3
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-boolean v3, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_3.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.d
new file mode 100644
index 0000000..9f30d4d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_30.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_30
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_boolean/d/T_iget_boolean_30
+    iget-boolean v1, v0, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_30.st_i1 Z
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.d
new file mode 100644
index 0000000..56747b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_4.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dfh
new file mode 100644
index 0000000..a68f88b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 663a47b7
+    B7 47 3A 66 
+// parsed: offset 12, len 20: signature           : 26ba...8627
+    26 BA 95 8C 7D 61 05 BB C8 CD CB 51 38 D9 12 D7 C7 20 86 27 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "Ljava/lang/Object;"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 377 (0x000179) "T_iget_boolean_4.java"
+    79 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 400 (0x000190) "V"
+    90 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "Z"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "i1"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "run"
+    9A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "Z"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  type_idx: 3 (0x000003) name_idx: 6 (0x000006) "i1"
+    00 00 03 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_iget_boolean_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 415 (0x00019f)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 9F 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_boolean.d.T_iget_boolean_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-boolean v1, v2, Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;.i1:Z // field@0000
+//@mod            55 21 00 00 
+            55 21 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 53: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 62 6F 6F 6C 65 61 6E 2F 64 2F 54 5F 69 67 65 74 5F 62 6F 6F 6C 65 61 6E 5F 34 3B 00 
+// parsed: offset 357, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 377, len 23: TYPE_STRING_DATA_ITEM [3] "T_iget_boolean_4.java"
+    15 54 5F 69 67 65 74 5F 62 6F 6F 6C 65 61 6E 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 406, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_boolean/d/T_iget_boolean_4;"
+    // parsed: offset 415, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 416, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 417, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 418, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 419, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 420, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 421, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 422, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 425, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 427, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 428, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 429, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 431, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 415 (0x00019f)
+        00 20 00 00 01 00 00 00 9F 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.d
new file mode 100644
index 0000000..f9bf929
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_5.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_5
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_5.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.java
new file mode 100644
index 0000000..5b275aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_5 {
+
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.d
new file mode 100644
index 0000000..ae3a118
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_6.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_boolean/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_boolean/TestStubs/<init>()V
+
+       iget-boolean v1, v0, dot.junit.opcodes.iget_boolean.TestStubs.TestStubField Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.java
new file mode 100644
index 0000000..0d91cab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_6 {
+
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.d
new file mode 100644
index 0000000..cdec059
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_7.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_7no_class.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.java
new file mode 100644
index 0000000..3ec333b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_7 {
+
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.d
new file mode 100644
index 0000000..fd4ff0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_8.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       iget-boolean v1, v2, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_8.i1N Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.java
new file mode 100644
index 0000000..b87cf8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_8 {
+
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.d
new file mode 100644
index 0000000..9b2b565
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_boolean_9.java
+.class public dot.junit.opcodes.iget_boolean.d.T_iget_boolean_9
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       const v0, 0        
+       iget-boolean v1, v0, dot.junit.opcodes.iget_boolean.d.T_iget_boolean_9.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.java
new file mode 100644
index 0000000..a5261bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_boolean/d/T_iget_boolean_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_boolean.d;
+
+public class T_iget_boolean_9 {
+    
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/TestStubs.java
new file mode 100644
index 0000000..90b1f13
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_byte;
+
+public class TestStubs {
+    // used by testVFE4
+    private byte TestStubField = 50;
+    // ussed by testVFE15
+    protected byte TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/Test_iget_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/Test_iget_byte.java
new file mode 100644
index 0000000..de48192
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/Test_iget_byte.java
@@ -0,0 +1,296 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_1;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_11;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_12;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_13;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_21;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_5;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_6;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_7;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_8;
+import dot.junit.opcodes.iget_byte.d.T_iget_byte_9;
+
+public class Test_iget_byte extends DxTestCase {
+    
+    /**
+     * @title get byte from field 
+     */
+    public void testN1() {
+        T_iget_byte_1 t = new T_iget_byte_1();
+        assertEquals(77, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_1
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_11
+        T_iget_byte_11 t = new T_iget_byte_11();
+        assertEquals(77, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_byte_9 t = new T_iget_byte_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }   
+
+    /**
+     * @constraint A11 
+     * @title  constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B13 
+     * @title read byte from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_byte_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_6
+        //@uses dot.junit.opcodes.iget_byte.TestStubs
+        try {
+            new T_iget_byte_6().run();
+            fail("expected an IllegalAccessError exception");
+        }  catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_byte_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_byte_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_12
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_1
+        try {
+            new T_iget_byte_12().run();
+            fail("expected an IllegalAccessError exception");
+        }  catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * @constraint B1 
+     * @title iget_byte shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_21
+        //@uses dot.junit.opcodes.iget_byte.TestStubs
+        try {
+            new T_iget_byte_21().run();
+            fail("expected an IllegalAccessError exception");
+        }  catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static  field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_byte.d.T_iget_byte_5
+        //@uses dot.junit.opcodes.iget_byte.TestStubs        
+        try {
+            new T_iget_byte_5().run();
+            fail("expected an IncompatibleClassChangeError exception");
+        }  catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_byte.d.T_iget_byte_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.d
new file mode 100644
index 0000000..6dbe256
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_1.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_1
+.super java/lang/Object
+
+.field public  i1 B
+.field protected  p1 B
+.field private  pvt1 B
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const v0, 77
+       iput-byte v0, v1, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.i1 B
+
+       const v0, 77
+       iput-byte v0, v1, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.p1 B
+
+       const v0, 77
+       iput-byte v0, v1, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.pvt1 B
+       
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.java
new file mode 100644
index 0000000..32df19e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_1 {
+    public static byte i1 = 77;
+    protected static byte p1 = 77;
+    private static byte pvt1 = 77;
+    
+    public byte run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.d
new file mode 100644
index 0000000..0a13a63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_11.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_11
+.super dot/junit/opcodes/iget_byte/d/T_iget_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_byte/d/T_iget_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.p1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.java
new file mode 100644
index 0000000..535c971
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_11 extends T_iget_byte_1 {
+
+    public byte run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.d
new file mode 100644
index 0000000..19d218b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_12.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_12
+.super dot/junit/opcodes/iget_byte/d/T_iget_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_byte/d/T_iget_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_1.pvt1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.java
new file mode 100644
index 0000000..3927a5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_12  extends T_iget_byte_1 {
+
+    @Override
+    public byte run() {
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.d
new file mode 100644
index 0000000..f09be61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_13.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_13.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.java
new file mode 100644
index 0000000..755b896
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_13  {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.d
new file mode 100644
index 0000000..f33ce5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_14.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.d
new file mode 100644
index 0000000..4564d6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_15.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.d
new file mode 100644
index 0000000..0cd45ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_16.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.d
new file mode 100644
index 0000000..fba56a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_17.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_17
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.d
new file mode 100644
index 0000000..309001d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_18.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_18
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.d
new file mode 100644
index 0000000..a1397ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_19.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.d
new file mode 100644
index 0000000..2373e00
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_20.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v0, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.d
new file mode 100644
index 0000000..40685ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_21.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_byte/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_byte/TestStubs/<init>()V
+
+       iget-byte v1, v0, dot.junit.opcodes.iget_byte.TestStubs.TestStubProtectedField B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.java
new file mode 100644
index 0000000..10deb39
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_21 {
+
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.d
new file mode 100644
index 0000000..a7cf811
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_3.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_3
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-byte v3, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_3.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.d
new file mode 100644
index 0000000..1c8e463
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_30.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_30
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_byte/d/T_iget_byte_30
+    iget-byte v1, v0, dot.junit.opcodes.iget_byte.d.T_iget_byte_30.st_i1 B
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.d
new file mode 100644
index 0000000..20f03c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_4.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_4
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_4.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dfh
new file mode 100644
index 0000000..26864a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_byte/d/T_iget_byte_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : acfa42dd
+    DD 42 FA AC 
+// parsed: offset 12, len 20: signature           : 3689...2216
+    36 89 53 31 46 F7 82 E5 1D 14 90 9F A4 DE 9A 22 E0 BC 22 16 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "B"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_iget_byte_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "B"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "B"
+//     return_type_idx: 0 (0x000000) "B"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_byte_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_byte.d.T_iget_byte_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_byte.d.T_iget_byte_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-byte v1, v2, Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;.i1:B // field@0000
+//@mod            56 21 00 00 
+            56 21 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "B"
+    01 42 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 62 79 74 65 2F 64 2F 54 5F 69 67 65 74 5F 62 79 74 65 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_iget_byte_4.java"
+    12 54 5F 69 67 65 74 5F 62 79 74 65 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_byte/d/T_iget_byte_4;"
+    // parsed: offset 406, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.d
new file mode 100644
index 0000000..65e6ed0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_5.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_5
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_5.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.java
new file mode 100644
index 0000000..75f7a5c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_5 {
+
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.d
new file mode 100644
index 0000000..0f761e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_6.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_byte/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_byte/TestStubs/<init>()V
+
+       iget-byte v1, v0, dot.junit.opcodes.iget_byte.TestStubs.TestStubField B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.java
new file mode 100644
index 0000000..20af80f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_6  {
+
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.d
new file mode 100644
index 0000000..a9df70b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_7.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_7no_class.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.java
new file mode 100644
index 0000000..f13071d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_7  {
+
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.d
new file mode 100644
index 0000000..de3b7a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_8.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       iget-byte v1, v2, dot.junit.opcodes.iget_byte.d.T_iget_byte_8.i1N B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.java
new file mode 100644
index 0000000..6f89bf3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_8  {
+
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.d
new file mode 100644
index 0000000..96eee86
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_byte_9.java
+.class public dot.junit.opcodes.iget_byte.d.T_iget_byte_9
+.super java/lang/Object
+
+.field public i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       const v0, 0
+       iget-byte v1, v0, dot.junit.opcodes.iget_byte.d.T_iget_byte_9.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.java
new file mode 100644
index 0000000..476ae5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_byte/d/T_iget_byte_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_byte.d;
+
+public class T_iget_byte_9 {
+    
+    public byte run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/TestStubs.java
new file mode 100644
index 0000000..5bf73ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_char;
+
+public class TestStubs {
+    // used by testVFE4
+    private char TestStubField = 50;
+    // ussed by testVFE15
+    protected char TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/Test_iget_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/Test_iget_char.java
new file mode 100644
index 0000000..c7516e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/Test_iget_char.java
@@ -0,0 +1,304 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_char.d.T_iget_char_1;
+import dot.junit.opcodes.iget_char.d.T_iget_char_11;
+import dot.junit.opcodes.iget_char.d.T_iget_char_12;
+import dot.junit.opcodes.iget_char.d.T_iget_char_13;
+import dot.junit.opcodes.iget_char.d.T_iget_char_21;
+import dot.junit.opcodes.iget_char.d.T_iget_char_5;
+import dot.junit.opcodes.iget_char.d.T_iget_char_6;
+import dot.junit.opcodes.iget_char.d.T_iget_char_7;
+import dot.junit.opcodes.iget_char.d.T_iget_char_8;
+import dot.junit.opcodes.iget_char.d.T_iget_char_9;
+
+public class Test_iget_char extends DxTestCase {
+    
+    /**
+     * @title get char from field 
+     */
+    public void testN1() {
+        T_iget_char_1 t = new T_iget_char_1();
+        assertEquals(77, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_1
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_11
+        T_iget_char_11 t = new T_iget_char_11();
+        assertEquals(77, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_char_9 t = new T_iget_char_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+   
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read char from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_char_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError t) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_6
+        //@uses dot.junit.opcodes.iget_char.TestStubs
+        try {
+            new T_iget_char_6().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError t) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_char_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError t) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_char_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError t) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_12
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_1
+        try {
+            new T_iget_char_12().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError t) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_char shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_char shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_char shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_char shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_char shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * @constraint B1 
+     * @title iget_char shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * @constraint B1 
+     * @title iget_char shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_21
+        //@uses dot.junit.opcodes.iget_char.TestStubs
+        try {
+            new T_iget_char_21().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError t) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static  field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_char.d.T_iget_char_5
+        //@uses dot.junit.opcodes.iget_char.TestStubs
+        try {
+            new T_iget_char_5().run();
+            fail("expected an IncompatibleClassChangeError exception");
+        } catch (IncompatibleClassChangeError t) {
+            // expected
+        }
+    }
+    
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_char.d.T_iget_char_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.d
new file mode 100644
index 0000000..837dd6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_1.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_1
+.super java/lang/Object
+
+.field public  i1 C
+.field protected  p1 C
+.field private  pvt1 C
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const v0, 77
+       iput-char v0, v1, dot.junit.opcodes.iget_char.d.T_iget_char_1.i1 C
+
+       const v0, 77
+       iput-char v0, v1, dot.junit.opcodes.iget_char.d.T_iget_char_1.p1 C
+
+       const v0, 77
+       iput-char v0, v1, dot.junit.opcodes.iget_char.d.T_iget_char_1.pvt1 C
+       
+       
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_1.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.java
new file mode 100644
index 0000000..227f97a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_1 {
+    public  char i1 = 77;
+    protected  char p1 = 77;
+    private  char pvt1 = 77;
+    
+    public char run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.d
new file mode 100644
index 0000000..9d74992
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_11.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_11
+.super dot/junit/opcodes/iget_char/d/T_iget_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_char/d/T_iget_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_1.p1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.java
new file mode 100644
index 0000000..cdd08a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_11 extends T_iget_char_1 {
+
+    public char run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.d
new file mode 100644
index 0000000..5194ff9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_12.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_12
+.super dot/junit/opcodes/iget_char/d/T_iget_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_char/d/T_iget_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_1.pvt1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.java
new file mode 100644
index 0000000..611b24b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_12 extends T_iget_char_1 {
+
+    @Override
+    public char run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.d
new file mode 100644
index 0000000..a7f5e58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_13.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_13.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.java
new file mode 100644
index 0000000..33cae33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_13 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.d
new file mode 100644
index 0000000..46f0e20
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_14.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.d
new file mode 100644
index 0000000..e8c7195
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_15.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.d
new file mode 100644
index 0000000..34dbaf0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_16.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.d
new file mode 100644
index 0000000..cde1b06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_17.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_17
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.d
new file mode 100644
index 0000000..f32f364
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_18.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_18
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.d
new file mode 100644
index 0000000..5efa5ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_19.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.d
new file mode 100644
index 0000000..895f42e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_20.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v0, v2, dot.junit.opcodes.iget_char.d.T_iget_char_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.d
new file mode 100644
index 0000000..4902259
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_21.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_char/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_char/TestStubs/<init>()V
+
+       iget-char v1, v0, dot.junit.opcodes.iget_char.TestStubs.TestStubProtectedField C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.java
new file mode 100644
index 0000000..6517824
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_21 {
+
+    public char run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.d
new file mode 100644
index 0000000..7838f58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_3.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_3
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-char v3, v2, dot.junit.opcodes.iget_char.d.T_iget_char_3.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.d
new file mode 100644
index 0000000..bdc90d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_30.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_30
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_char/d/T_iget_char_30
+    iget-char v1, v0, dot.junit.opcodes.iget_char.d.T_iget_char_30.st_i1 C
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.d
new file mode 100644
index 0000000..428c14b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_4.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_4
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_4.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.dfh
new file mode 100644
index 0000000..270fbc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_char/d/T_iget_char_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_char/d/T_iget_char_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 583643f9
+    F9 43 36 58 
+// parsed: offset 12, len 20: signature           : c593...65f6
+    C5 93 2D 56 9E A8 DE 9C EB 9B 10 08 C0 63 49 6A B5 96 65 F6 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "C"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_iget_char_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "C"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "C"
+//     return_type_idx: 0 (0x000000) "C"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_char_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_char.d.T_iget_char_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_char.d.T_iget_char_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-char v1, v2, Ldot/junit/opcodes/iget_char/d/T_iget_char_4;.i1:C // field@0000
+//@mod            57 21 00 00 
+            57 21 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "C"
+    01 43 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 63 68 61 72 2F 64 2F 54 5F 69 67 65 74 5F 63 68 61 72 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_iget_char_4.java"
+    12 54 5F 69 67 65 74 5F 63 68 61 72 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_char/d/T_iget_char_4;"
+    // parsed: offset 406, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.d
new file mode 100644
index 0000000..534412f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_5.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_5
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_5.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.java
new file mode 100644
index 0000000..4975e76
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_5 {
+
+    public char run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.d
new file mode 100644
index 0000000..0d208b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_6.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_char/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_char/TestStubs/<init>()V
+
+       iget-char v1, v0, dot.junit.opcodes.iget_char.TestStubs.TestStubField C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.java
new file mode 100644
index 0000000..8be8c2b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_6 {
+
+    public char run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.d
new file mode 100644
index 0000000..b2ca2ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_7.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_7no_class.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.java
new file mode 100644
index 0000000..4ca80d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_7 {
+
+    public char run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.d
new file mode 100644
index 0000000..7a75de0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_8.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       iget-char v1, v2, dot.junit.opcodes.iget_char.d.T_iget_char_8.i1N C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.java
new file mode 100644
index 0000000..49d35c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_8 {
+
+    public char run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.d
new file mode 100644
index 0000000..70eca20
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_char_9.java
+.class public dot.junit.opcodes.iget_char.d.T_iget_char_9
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       const v0, 0    
+       iget-char v1, v0, dot.junit.opcodes.iget_char.d.T_iget_char_9.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.java
new file mode 100644
index 0000000..6bbe1ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_char/d/T_iget_char_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_char.d;
+
+public class T_iget_char_9 {
+    
+    public char run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/TestStubs.java
new file mode 100644
index 0000000..0a68e56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_object;
+
+public class TestStubs {
+    // used by testVFE4
+    private Object TestStubField = null;
+    // used by testVFE15
+    protected Object TestStubProtectedField = null;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/Test_iget_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/Test_iget_object.java
new file mode 100644
index 0000000..3a735b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/Test_iget_object.java
@@ -0,0 +1,318 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_object.d.T_iget_object_1;
+import dot.junit.opcodes.iget_object.d.T_iget_object_11;
+import dot.junit.opcodes.iget_object.d.T_iget_object_12;
+import dot.junit.opcodes.iget_object.d.T_iget_object_13;
+import dot.junit.opcodes.iget_object.d.T_iget_object_21;
+import dot.junit.opcodes.iget_object.d.T_iget_object_22;
+import dot.junit.opcodes.iget_object.d.T_iget_object_5;
+import dot.junit.opcodes.iget_object.d.T_iget_object_6;
+import dot.junit.opcodes.iget_object.d.T_iget_object_7;
+import dot.junit.opcodes.iget_object.d.T_iget_object_8;
+import dot.junit.opcodes.iget_object.d.T_iget_object_9;
+
+public class Test_iget_object extends DxTestCase {
+    
+    /**
+     * @title get reference from field 
+     */
+    public void testN1() {
+        T_iget_object_1 t = new T_iget_object_1();
+        assertEquals(null, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_1
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_11
+        T_iget_object_11 t = new T_iget_object_11();
+        assertEquals(null, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_object_9 t = new T_iget_object_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }  
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title  (read object from long field - only field with same name but 
+     * different type exists)
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_object_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_6
+        //@uses dot.junit.opcodes.iget_object.TestStubs
+        try {
+            new T_iget_object_6().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_object_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_object_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_12
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_1
+        try {
+            new T_iget_object_12().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_object shall not work for short fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for char fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_object shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title  only field of different type exists
+     */
+    public void testVFE15() {
+        try {
+            new T_iget_object_21().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_22
+        //@uses dot.junit.opcodes.iget_object.TestStubs
+        try {
+            new T_iget_object_22().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static field.
+     */
+    public void testVFE17() {
+        //@uses dot.junit.opcodes.iget_object.d.T_iget_object_5
+        //@uses dot.junit.opcodes.iget_object.TestStubs
+        try {
+            new T_iget_object_5().run();
+            fail("expected an IncompatibleClassChangeError exception");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_object.d.T_iget_object_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.d
new file mode 100644
index 0000000..5e4967f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_1.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_1
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+.field protected  p1 Ljava/lang/Object;
+.field private  pvt1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       const v0, 0
+       iput-object v0, v1, dot.junit.opcodes.iget_object.d.T_iget_object_1.i1 Ljava/lang/Object;
+
+       const v0, 0
+       iput-object v0, v1, dot.junit.opcodes.iget_object.d.T_iget_object_1.p1 Ljava/lang/Object;
+
+       const v0, 0
+       iput-object v0, v1, dot.junit.opcodes.iget_object.d.T_iget_object_1.pvt1 Ljava/lang/Object;
+       
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_1.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.java
new file mode 100644
index 0000000..a063f8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_1 {
+    public  Object i1 = null;
+    protected  Object p1 = null;
+    private  Object pvt1 = null;
+    
+    public Object run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.d
new file mode 100644
index 0000000..35a2de0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_11.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_11
+.super dot/junit/opcodes/iget_object/d/T_iget_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_object/d/T_iget_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_1.p1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.java
new file mode 100644
index 0000000..5fdf44a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_11 extends T_iget_object_1 {
+
+    public Object run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.d
new file mode 100644
index 0000000..b2d7400
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_12.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_12
+.super dot/junit/opcodes/iget_object/d/T_iget_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_object/d/T_iget_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_1.pvt1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.java
new file mode 100644
index 0000000..f98c36a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_12  extends T_iget_object_1 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.d
new file mode 100644
index 0000000..21414cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_13.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_13.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.java
new file mode 100644
index 0000000..85a8761
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_13  {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.d
new file mode 100644
index 0000000..df2581c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_14.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_14
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_14.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.d
new file mode 100644
index 0000000..313ec7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_15.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_15
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_15.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.d
new file mode 100644
index 0000000..d9df4aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_16.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.d
new file mode 100644
index 0000000..82cb90e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_17.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_17
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.d
new file mode 100644
index 0000000..3dac91f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_18.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_18
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.d
new file mode 100644
index 0000000..19a9277
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_19.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.d
new file mode 100644
index 0000000..71751fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_20.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v0, v2, dot.junit.opcodes.iget_object.d.T_iget_object_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.d
new file mode 100644
index 0000000..10143a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_21.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_21
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       
+       new-instance v0, java/lang/Object
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       
+       iput-object v0, v1, dot.junit.opcodes.iget_object.d.T_iget_object_21.i1 Ljava/lang/Object;
+       
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_21.i1 Ljava/lang/String;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.java
new file mode 100644
index 0000000..e301893
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_21  {
+
+    public String run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.d
new file mode 100644
index 0000000..2858934
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_22.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_22
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_object/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_object/TestStubs/<init>()V
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.TestStubs.TestStubProtectedField Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.java
new file mode 100644
index 0000000..d9ad933
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_22.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_22  {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.d
new file mode 100644
index 0000000..4999f1a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_3.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_3
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-object v3, v2, dot.junit.opcodes.iget_object.d.T_iget_object_3.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.d
new file mode 100644
index 0000000..621f235
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_30.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_30
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_object/d/T_iget_object_30
+    iget-object v1, v0, dot.junit.opcodes.iget_object.d.T_iget_object_30.st_i1 Ljava/lang/Object;
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.d
new file mode 100644
index 0000000..9a05156
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_4.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_4
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_4.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.dfh
new file mode 100644
index 0000000..a031623
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_4.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_object/d/T_iget_object_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_object/d/T_iget_object_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 70da44ea
+    EA 44 DA 70 
+// parsed: offset 12, len 20: signature           : 6c85...f80f
+    6C 85 8D 3C F4 BD 5A AF 3C BC 06 C0 24 6F AA 65 52 1A F8 0F 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 156 (0x00009c)
+    9C 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 188 (0x0000bc)
+    BC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 244 (0x0000f4)
+    F4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "L"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_iget_object_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "i1"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "run"
+    93 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 156, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 1 (0x000001) "Ljava/lang/Object;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 00 00 00 00 
+// parsed: offset 168, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  type_idx: 1 (0x000001) name_idx: 6 (0x000006) "i1"
+    00 00 01 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 188, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 196, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 204, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 212, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_object_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 408 (0x000198)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 98 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_object.d.T_iget_object_4.<init>"
+    // parsed: offset 244, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 246, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 248, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 250, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 252, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 256, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 260, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 266, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_object.d.T_iget_object_4.run"
+    // parsed: offset 268, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 284, len 4: |0000: iget-object v1, v2, Ldot/junit/opcodes/iget_object/d/T_iget_object_4;.i1:Ljava/lang/Object; // field@0000
+//@mod            54 21 00 00 
+            54 21 00 01 
+        // parsed: offset 288, len 2: |0002: return-object v1
+            11 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 290, len 2: PADDING
+    00 00 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 303, len 51: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 6F 62 6A 65 63 74 2F 64 2F 54 5F 69 67 65 74 5F 6F 62 6A 65 63 74 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 22: TYPE_STRING_DATA_ITEM [4] "T_iget_object_4.java"
+    14 54 5F 69 67 65 74 5F 6F 62 6A 65 63 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 403, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_object/d/T_iget_object_4;"
+    // parsed: offset 408, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 409, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 410, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 411, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 412, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 413, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 244 (0x0000f4)
+                F4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 268 (0x00010c)
+                8C 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 144 (0x000090)
+        02 00 00 00 03 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 156 (0x00009c)
+        03 00 00 00 02 00 00 00 9C 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 180 (0x0000b4)
+        04 00 00 00 01 00 00 00 B4 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 188 (0x0000bc)
+        05 00 00 00 03 00 00 00 BC 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 212 (0x0000d4)
+        06 00 00 00 01 00 00 00 D4 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 244 (0x0000f4)
+        01 20 00 00 02 00 00 00 F4 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 292 (0x000124)
+        02 20 00 00 08 00 00 00 24 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 20 00 00 01 00 00 00 98 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.d
new file mode 100644
index 0000000..ed15e90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_5.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_5
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_5.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.java
new file mode 100644
index 0000000..3626499
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_5  {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.d
new file mode 100644
index 0000000..e9082e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_6.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_object/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_object/TestStubs/<init>()V
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.TestStubs.TestStubField Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.java
new file mode 100644
index 0000000..a4ba515
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_6  {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.d
new file mode 100644
index 0000000..db5f6f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_7.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_7no_class.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.java
new file mode 100644
index 0000000..2940ca4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_7  {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.d
new file mode 100644
index 0000000..67f7b82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_8.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       iget-object v1, v2, dot.junit.opcodes.iget_object.d.T_iget_object_8.i1N Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.java
new file mode 100644
index 0000000..3b5c4d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_8  {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.d
new file mode 100644
index 0000000..7899b37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_object_9.java
+.class public dot.junit.opcodes.iget_object.d.T_iget_object_9
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       const v0, 0
+       iget-object v1, v0, dot.junit.opcodes.iget_object.d.T_iget_object_9.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.java
new file mode 100644
index 0000000..7ff752e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_object/d/T_iget_object_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_object.d;
+
+public class T_iget_object_9 {
+    
+    public Object run(){
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/TestStubs.java
new file mode 100644
index 0000000..8580ec3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_short;
+
+public class TestStubs {
+    // used by testVFE4
+    private short TestStubField = 50;
+    // used by testVFE15
+    protected short TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/Test_iget_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/Test_iget_short.java
new file mode 100644
index 0000000..a7d3658
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/Test_iget_short.java
@@ -0,0 +1,306 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_short.d.T_iget_short_1;
+import dot.junit.opcodes.iget_short.d.T_iget_short_11;
+import dot.junit.opcodes.iget_short.d.T_iget_short_12;
+import dot.junit.opcodes.iget_short.d.T_iget_short_13;
+import dot.junit.opcodes.iget_short.d.T_iget_short_21;
+import dot.junit.opcodes.iget_short.d.T_iget_short_5;
+import dot.junit.opcodes.iget_short.d.T_iget_short_6;
+import dot.junit.opcodes.iget_short.d.T_iget_short_7;
+import dot.junit.opcodes.iget_short.d.T_iget_short_8;
+import dot.junit.opcodes.iget_short.d.T_iget_short_9;
+
+public class Test_iget_short extends DxTestCase {
+    
+    /**
+     * @title get short from field
+     */
+    public void testN1() {
+        T_iget_short_1 t = new T_iget_short_1();
+        assertEquals(32000, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_1
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_11
+        T_iget_short_11 t = new T_iget_short_11();
+        assertEquals(32000, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_short_9 t = new T_iget_short_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+  
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read short from long field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_short_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_6
+        //@uses dot.junit.opcodes.iget_short.TestStubs
+        try {
+            new T_iget_short_6().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_short_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_short_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_12
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_1
+        try {
+            new T_iget_short_12().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget_short shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for char fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget_short shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_21
+        //@uses dot.junit.opcodes.iget_short.TestStubs
+        try {
+            new T_iget_short_21().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static  field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_short.d.T_iget_short_5
+        //@uses dot.junit.opcodes.iget_short.TestStubs
+        try {
+            new T_iget_short_5().run();
+            fail("expected an IncompatibleClassChangeError exception");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_short.d.T_iget_short_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.d
new file mode 100644
index 0000000..822f09e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_1.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_1
+.super java/lang/Object
+
+.field public  i1 S
+.field protected  p1 S
+.field private  pvt1 S
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       const v0, 32000
+       iput-short v0, v1, dot.junit.opcodes.iget_short.d.T_iget_short_1.i1 S
+
+       const v0, 32000
+       iput-short v0, v1, dot.junit.opcodes.iget_short.d.T_iget_short_1.p1 S
+
+       const v0, 32000
+       iput-short v0, v1, dot.junit.opcodes.iget_short.d.T_iget_short_1.pvt1 S
+       
+       
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_1.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.java
new file mode 100644
index 0000000..d70b7a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_1 {
+    public  short i1 = 32000;
+    protected  short p1 = 32000;
+    private  short pvt1 = 32000;
+    
+    public short run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.d
new file mode 100644
index 0000000..0dfd2f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_11.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_11
+.super dot/junit/opcodes/iget_short/d/T_iget_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_short/d/T_iget_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_1.p1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.java
new file mode 100644
index 0000000..0fd12c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_11 extends T_iget_short_1 {
+
+    public short run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.d
new file mode 100644
index 0000000..e47f6a6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_12.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_12
+.super dot/junit/opcodes/iget_short/d/T_iget_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_short/d/T_iget_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_1.pvt1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.java
new file mode 100644
index 0000000..be322f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_12 extends T_iget_short_1 {
+
+    @Override
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.d
new file mode 100644
index 0000000..22a94a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_13.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_13
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_13.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.java
new file mode 100644
index 0000000..3b27d6c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_13 {
+
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.d
new file mode 100644
index 0000000..9e0367a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_14.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.d
new file mode 100644
index 0000000..cf1fbf5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_15.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_15
+.super java/lang/Object
+
+.field public i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_15.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.d
new file mode 100644
index 0000000..635640a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_16.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_16
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.d
new file mode 100644
index 0000000..6a717be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_17.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_17
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.d
new file mode 100644
index 0000000..70dda5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_18.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_18
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.d
new file mode 100644
index 0000000..cdaa952
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_19.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_19
+.super java/lang/Object
+
+.field public  i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.d
new file mode 100644
index 0000000..5568f60
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_20.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_20
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v0, v2, dot.junit.opcodes.iget_short.d.T_iget_short_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d
new file mode 100644
index 0000000..eff1f49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_21.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iget_short/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_short/TestStubs/<init>()V
+       
+       iget-wide v1, v0, dot.junit.opcodes.iget_short.TestStubs.TestStubProtectedField S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.java
new file mode 100644
index 0000000..5bb7f6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_21.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_21 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.d
new file mode 100644
index 0000000..0de7441
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_3.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_3
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-short v3, v2, dot.junit.opcodes.iget_short.d.T_iget_short_3.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.d
new file mode 100644
index 0000000..bc8bc9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_30.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_30
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_short/d/T_iget_short_30
+    iget-short v1, v0, dot.junit.opcodes.iget_short.d.T_iget_short_30.st_i1 S
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.d
new file mode 100644
index 0000000..9e2ffb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_4.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_4
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_4.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.dfh
new file mode 100644
index 0000000..3716e2a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_short/d/T_iget_short_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_short/d/T_iget_short_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 636b4534
+    34 45 6B 63 
+// parsed: offset 12, len 20: signature           : 7e12...b877
+    7E 12 BB A2 6A C1 65 67 56 AC 7C 83 C7 BA 11 D9 23 22 B8 77 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "Ljava/lang/Object;"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 373 (0x000175) "S"
+    75 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 376 (0x000178) "T_iget_short_4.java"
+    78 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "i1"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 404 (0x000194) "run"
+    94 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "S"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "S"
+//     return_type_idx: 2 (0x000002) "S"
+//     parameters_off: 0 (0x000000)
+    03 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  type_idx: 2 (0x000002) name_idx: 6 (0x000006) "i1"
+    00 00 02 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_short_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 409 (0x000199)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 99 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_short.d.T_iget_short_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_short.d.T_iget_short_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-short v1, v2, Ldot/junit/opcodes/iget_short/d/T_iget_short_4;.i1:S // field@0000
+//@mod            58 21 00 00 
+            58 21 00 01
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 49: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 73 68 6F 72 74 2F 64 2F 54 5F 69 67 65 74 5F 73 68 6F 72 74 5F 34 3B 00 
+// parsed: offset 353, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 373, len 3: TYPE_STRING_DATA_ITEM [3] "S"
+    01 53 00 
+// parsed: offset 376, len 21: TYPE_STRING_DATA_ITEM [4] "T_iget_short_4.java"
+    13 54 5F 69 67 65 74 5F 73 68 6F 72 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 404, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_short/d/T_iget_short_4;"
+    // parsed: offset 409, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 410, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 411, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 412, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 413, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 416, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 419, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 421, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 422, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 423, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 425, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 409 (0x000199)
+        00 20 00 00 01 00 00 00 99 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.d
new file mode 100644
index 0000000..ac92c40
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_5.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_5
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_5.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.java
new file mode 100644
index 0000000..37c43519
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_5 {
+
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.d
new file mode 100644
index 0000000..764d42e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_6.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.TestStubs.TestStubField S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.java
new file mode 100644
index 0000000..5ac127b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_6 {
+
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.d
new file mode 100644
index 0000000..3a042d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_7.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_7no_class.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.java
new file mode 100644
index 0000000..7c81be5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_7 {
+
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.d
new file mode 100644
index 0000000..129d2e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_8.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       iget-short v1, v2, dot.junit.opcodes.iget_short.d.T_iget_short_8.i1N S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.java
new file mode 100644
index 0000000..f22a81e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_8 {
+
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.d
new file mode 100644
index 0000000..8721333
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_short_9.java
+.class public dot.junit.opcodes.iget_short.d.T_iget_short_9
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       const v0, 0
+       iget-short v1, v0, dot.junit.opcodes.iget_short.d.T_iget_short_9.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.java
new file mode 100644
index 0000000..178efc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_short/d/T_iget_short_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_short.d;
+
+public class T_iget_short_9 {
+    
+    public short run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/TestStubs.java
new file mode 100644
index 0000000..f90a470
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/TestStubs.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_wide;
+
+public class TestStubs {
+    // used by testVFE4
+    private long TestStubField = 50;
+    // ussed by testVFE15
+    protected long TestStubProtectedField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/Test_iget_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/Test_iget_wide.java
new file mode 100644
index 0000000..7e42d32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/Test_iget_wide.java
@@ -0,0 +1,311 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_1;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_11;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_12;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_13;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_2;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_21;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_5;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_6;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_7;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_8;
+import dot.junit.opcodes.iget_wide.d.T_iget_wide_9;
+
+public class Test_iget_wide extends DxTestCase {
+    
+    /**
+     * @title type - long
+     */
+    public void testN1() {
+        T_iget_wide_1 t = new T_iget_wide_1();
+        assertEquals(12345679890123l, t.run());
+    }
+
+    /**
+     * @title type - double
+     */
+    public void testN2() {
+        T_iget_wide_2 t = new T_iget_wide_2();
+        assertEquals(123.0, t.run());
+    }
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_1
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_11
+        T_iget_wide_11 t = new T_iget_wide_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iget_wide_9 t = new T_iget_wide_9();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }   
+
+    /**
+     * @constraint A11 
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B13 
+     * @title read long from integer field - only field with same name but 
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_iget_wide_13().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+    
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_6
+        //@uses dot.junit.opcodes.iget_wide.TestStubs
+        try {
+            new T_iget_wide_6().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class. 
+     */
+    public void testVFE5() {
+        try {
+            new T_iget_wide_7().run();
+            fail("expected a NoClassDefFoundError exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_iget_wide_8().run();
+            fail("expected a NoSuchFieldError exception");
+        } catch (NoSuchFieldError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_12
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_1
+        try {
+            new T_iget_wide_12().run();
+            fail("expected a IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+   
+    /**
+     * @constraint B1 
+     * @title iget-wide shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for boolean fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for float fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    } 
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title iget-wide shall not work for int fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B12
+     * @title Attempt to read inaccessible protected field.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_21
+        //@uses dot.junit.opcodes.iget_wide.TestStubs
+        try {
+            new T_iget_wide_21().run();
+            fail("expected an IllegalAccessError exception");
+        } catch (IllegalAccessError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A11
+     * @title Attempt to read static  field.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.iget_wide.d.T_iget_wide_5
+        //@uses dot.junit.opcodes.iget_wide.TestStubs
+        try {
+            new T_iget_wide_5().run();
+            fail("expected a IncompatibleClassChangeError exception");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint B6 
+     * @title instance fields may only be accessed on already initialized instances. 
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iget_wide.d.T_iget_wide_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.d
new file mode 100644
index 0000000..3919e04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_1.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_1
+.super java/lang/Object
+
+.field public  i1 J
+.field protected  p1 J
+.field private  pvt1 J
+
+
+.method public <init>()V
+.limit regs 3
+
+       invoke-direct {v2}, java/lang/Object/<init>()V
+       
+       const-wide v0, 12345679890123
+       iput-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.i1 J
+
+       const-wide v0, 10
+       iput-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.p1 J
+
+       const-wide v0, 20
+       iput-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.pvt1 J
+       
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.java
new file mode 100644
index 0000000..309671d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_1 {
+    public  long i1 = 12345679890123l;
+    protected  long p1 = 10;
+    private  long pvt1 = 20;
+    
+    public long run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.d
new file mode 100644
index 0000000..9a6f454
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_11.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_11
+.super dot/junit/opcodes/iget_wide/d/T_iget_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_wide/d/T_iget_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.p1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.java
new file mode 100644
index 0000000..c93589e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_11 extends T_iget_wide_1 {
+
+    public long run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.d
new file mode 100644
index 0000000..9a2cc44
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_12.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_12
+.super dot/junit/opcodes/iget_wide/d/T_iget_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iget_wide/d/T_iget_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_1.pvt1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.java
new file mode 100644
index 0000000..af3cbda
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_12 extends T_iget_wide_1 {
+
+    @Override
+    public long run() {
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.d
new file mode 100644
index 0000000..63affb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_13.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_13
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_13.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.java
new file mode 100644
index 0000000..98086a6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_13 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.d
new file mode 100644
index 0000000..3ffdc18
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_14.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_14
+.super java/lang/Object
+
+.field public  i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.d
new file mode 100644
index 0000000..5b7424b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_15.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_15
+.super java/lang/Object
+
+.field public  i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.d
new file mode 100644
index 0000000..ce37389
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_16.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_16
+.super java/lang/Object
+
+.field public  i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_16.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.d
new file mode 100644
index 0000000..1181a48
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_17.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_17
+.super java/lang/Object
+
+.field public  i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.d
new file mode 100644
index 0000000..03c2a0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_18.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_18
+.super java/lang/Object
+
+.field public  i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.d
new file mode 100644
index 0000000..1978e12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_19.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_19
+.super java/lang/Object
+
+.field public  i1 F
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_19.i1 F
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.d
new file mode 100644
index 0000000..16f9f5a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_2.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_2
+.super java/lang/Object
+
+.field public  val D
+
+.method public <init>()V
+.limit regs 3
+
+       invoke-direct {v2}, java/lang/Object/<init>()V
+       
+       const-wide v0, 123.0
+       iput-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_2.val D
+       
+       return-void
+.end method
+
+.method public run()D
+.limit regs 4
+
+       iget-wide v1, v3, dot.junit.opcodes.iget_wide.d.T_iget_wide_2.val D
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.java
new file mode 100644
index 0000000..726f4b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_2 {
+
+    public  double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.d
new file mode 100644
index 0000000..1f3e225
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_20.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_20
+.super java/lang/Object
+
+.field public  i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_20.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.d
new file mode 100644
index 0000000..fea700d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_21.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       
+       new-instance v0, Ldot/junit/opcodes/iget_wide/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_wide/TestStubs/<init>()V
+       
+       iget-wide v1, v0, dot.junit.opcodes.iget_wide.TestStubs.TestStubProtectedField J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.java
new file mode 100644
index 0000000..affeadf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_21 {
+
+    public long run() {
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.d
new file mode 100644
index 0000000..bb7026e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_3.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_3
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iget-wide v3, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_3.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.d
new file mode 100644
index 0000000..432f376
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_30.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_30.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_30
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iget_wide/d/T_iget_wide_30
+    iget-wide v1, v0, dot.junit.opcodes.iget_wide.d.T_iget_wide_30.st_i1 J
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.d
new file mode 100644
index 0000000..8dd2d4e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_4.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_4
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_4.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dfh
new file mode 100644
index 0000000..489efd2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iget_wide/d/T_iget_wide_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 1ffd428b
+    8B 42 FD 1F 
+// parsed: offset 12, len 20: signature           : 2608...94cb
+    26 08 93 C5 49 69 AF 88 0D C9 EC 21 52 81 36 4E CA 50 94 CB 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "J"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_iget_wide_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "J"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "J"
+//     return_type_idx: 0 (0x000000) "J"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iget_wide_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iget_wide.d.T_iget_wide_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iget_wide.d.T_iget_wide_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: iget-wide v1, v2, Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;.i1:J // field@0000
+//@mod            53 21 00 00 
+            53 21 00 01
+        // parsed: offset 292, len 2: |0002: return-wide v1
+            10 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "J"
+    01 4A 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 67 65 74 5F 77 69 64 65 2F 64 2F 54 5F 69 67 65 74 5F 77 69 64 65 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_iget_wide_4.java"
+    12 54 5F 69 67 65 74 5F 77 69 64 65 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iget_wide/d/T_iget_wide_4;"
+    // parsed: offset 406, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.d
new file mode 100644
index 0000000..cab5c10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_5.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_5
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_5.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.java
new file mode 100644
index 0000000..c4c130e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_5 {
+
+    public long run() {
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.d
new file mode 100644
index 0000000..ba13f26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_6.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       
+       new-instance v0, Ldot/junit/opcodes/iget_wide/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iget_wide/TestStubs/<init>()V
+       
+       iget-wide v1, v0, dot.junit.opcodes.iget_wide.TestStubs.TestStubField J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.java
new file mode 100644
index 0000000..649795f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_6 {
+
+    public long run() {
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.d
new file mode 100644
index 0000000..572fdbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_7.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_7no_class.i1 J
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.java
new file mode 100644
index 0000000..0866645
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_7 {
+
+    public long run() {
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.d
new file mode 100644
index 0000000..96b8c56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_8.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       iget-wide v1, v2, dot.junit.opcodes.iget_wide.d.T_iget_wide_8.i1N J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.java
new file mode 100644
index 0000000..570764d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_8 {
+
+    public long run() {
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.d
new file mode 100644
index 0000000..3cb12cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iget_wide_9.java
+.class public dot.junit.opcodes.iget_wide.d.T_iget_wide_9
+.super java/lang/Object
+
+.field public  i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       const v0, 0
+       iget-wide v1, v0, dot.junit.opcodes.iget_wide.d.T_iget_wide_9.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.java
new file mode 100644
index 0000000..6999d93
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iget_wide/d/T_iget_wide_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iget_wide.d;
+
+public class T_iget_wide_9 {
+    
+    public long run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/TestStubs.java
new file mode 100644
index 0000000..9867d92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/TestStubs.java
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.instance_of;
+
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/Test_instance_of.java b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/Test_instance_of.java
new file mode 100644
index 0000000..b0a6cc6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/Test_instance_of.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.instance_of;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.instance_of.d.T_instance_of_1;
+import dot.junit.opcodes.instance_of.d.T_instance_of_2;
+import dot.junit.opcodes.instance_of.d.T_instance_of_3;
+import dot.junit.opcodes.instance_of.d.T_instance_of_7;
+
+public class Test_instance_of extends DxTestCase {
+
+
+    /**
+     * @title (Object)String instanceof String
+     */
+    public void testN1() {
+        T_instance_of_1 t = new T_instance_of_1();
+        String s = "";
+        assertTrue(t.run(s));
+    }
+
+    /**
+     * @title null instanceof String
+     */
+    public void testN2() {
+        T_instance_of_1 t = new T_instance_of_1();
+        assertFalse(t.run(null));
+    }
+
+    /**
+     * @title check assignment compatibility rules
+     */
+    public void testN4() {
+        T_instance_of_2 t = new T_instance_of_2();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title T_instance_of_1 instanceof String
+     */
+    public void testE1() {
+        T_instance_of_1 t = new T_instance_of_1();
+        assertFalse(t.run(t));
+    }
+
+    /**
+     * @title Attempt to access inaccessible class.
+     */
+    public void testE2() {
+        //@uses dot.junit.opcodes.instance_of.TestStubs
+        //@uses dot.junit.opcodes.instance_of.d.T_instance_of_3
+        try {
+            T_instance_of_3 tt = new T_instance_of_3();
+            tt.run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError e) {
+        }
+    }
+
+    /**
+     * @title Attempt to access undefined class.
+     */
+    public void testE3() {
+        try {
+            T_instance_of_7 tt = new T_instance_of_7();
+            tt.run();
+            fail("expected a verification exception");
+        } catch (NoClassDefFoundError e) {
+            // expected
+        } catch(VerifyError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A19
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.instance_of.d.T_instance_of_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title type of argument - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.instance_of.d.T_instance_of_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.instance_of.d.T_instance_of_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.instance_of.d.T_instance_of_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.d
new file mode 100644
index 0000000..4741d35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_instance_of_1.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)Z
+.limit regs 5
+
+       instance-of v0, v4, java/lang/String
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.java
new file mode 100644
index 0000000..bd9118a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.instance_of.d;
+
+public class T_instance_of_1 {
+
+    public boolean run(Object o) {
+        return o instanceof String; 
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.d
new file mode 100644
index 0000000..1299b54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.d
@@ -0,0 +1,119 @@
+; Copyright (C) 2008 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.
+
+.source TestStubs.java
+.interface public dot.junit.opcodes.instance_of.d.T_instance_of_2.SuperInterface
+
+.source TestStubs.java    
+.interface public dot.junit.opcodes.instance_of.d.T_instance_of_2.SuperInterface2
+
+.source TestStubs.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_2.SuperClass 
+.super java/lang/Object
+.implements dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface
+    
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method    
+
+.source TestStubs.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_2.SubClass 
+.super dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass/<init>()V
+       return-void
+.end method
+
+
+.source T_instance_of_2.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 20
+
+    const v0, 0
+    
+; (SubClass instanceof SuperClass)    
+    new-instance v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass/<init>()V
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass
+    if-eqz v15, LabelExit
+    
+; (SubClass[] instanceof SuperClass[])    
+    const v11, 1
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    instance-of v15, v10, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass;
+    if-eqz v15, LabelExit
+
+; (SubClass[] instanceof Object)    
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    instance-of v15, v10, java/lang/Object
+    if-eqz v15, LabelExit
+    
+; (SubClass instanceof SuperInterface)    
+    new-instance v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass/<init>()V    
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface
+    if-eqz v15, LabelExit
+
+; !(SuperClass instanceof SubClass)    
+    new-instance v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass
+    invoke-direct {v10}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass/<init>()V
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    if-nez v15, LabelExit
+        
+; !(SubClass instanceof SuperInterface2)    
+    new-instance v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    invoke-direct {v10}, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass/<init>()V    
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface2
+    if-nez v15, LabelExit
+
+; !(SubClass[] instanceof SuperInterface)    
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SuperInterface
+    if-nez v15, LabelExit
+
+; !(SubClass[] instanceof SubClass)    
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    instance-of v15, v10, dot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass
+    if-nez v15, LabelExit
+    
+; !(SuperClass[] instanceof SubClass[])    
+    new-array v10, v11, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SuperClass;
+    instance-of v15, v10, [Ldot/junit/opcodes/instance_of/d/T_instance_of_2/SubClass;
+    if-nez v15, LabelExit
+    
+    const v0, 1
+    
+LabelExit:        
+    return v0
+    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.java
new file mode 100644
index 0000000..e7f1940
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.instance_of.d;
+
+public class T_instance_of_2 {
+
+    public boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.d
new file mode 100644
index 0000000..6705dcf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_instance_of_3.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+       instance-of v0, v5, dot/junit/opcodes/instance_of/TestStubs
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.java
new file mode 100644
index 0000000..65a0165
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.instance_of.d;
+
+public class T_instance_of_3 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.d
new file mode 100644
index 0000000..fe8b891
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_instance_of_4.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+
+       instance-of v0, v4, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.dfh
new file mode 100644
index 0000000..cec381b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_4.dfh
@@ -0,0 +1,264 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/instance_of/d/T_instance_of_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/instance_of/d/T_instance_of_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 66154a36
+    36 4A 15 66 
+// parsed: offset 12, len 20: signature           : 2821...ff3e
+    28 21 65 D6 F8 0F AB 2B 99 4B 13 E4 29 66 87 41 09 61 FF 3E 
+// parsed: offset 32, len 4: file_size           : 580
+    44 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 444 (0x0001bc)
+    BC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 340
+    54 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 294 (0x000126) "<init>"
+    26 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 302 (0x00012e) "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+    2E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "Ljava/lang/Object;"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 373 (0x000175) "Ljava/lang/String;"
+    75 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 393 (0x000189) "T_instance_of_4.java"
+    89 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 415 (0x00019f) "V"
+    9F 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 418 (0x0001a2) "VL"
+    A2 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 422 (0x0001a6) "run"
+    A6 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/String;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "VL"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 288 (0x000120)
+    06 00 00 00 03 00 00 00 20 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_instance_of_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 427 (0x0001ab)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 AB 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.instance_of.d.T_instance_of_4.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.instance_of.d.T_instance_of_4.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 280, len 4: |0000: instance-of v0, v4, Ljava/lang/String; // class@0002
+//@mod             20 40 02 00         
+            20 40 02 01 
+        // parsed: offset 284, len 2: |0002: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 286, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 288, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 292, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 294, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 302, len 51: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 73 74 61 6E 63 65 5F 6F 66 2F 64 2F 54 5F 69 6E 73 74 61 6E 63 65 5F 6F 66 5F 34 3B 00 
+// parsed: offset 353, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 373, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 393, len 22: TYPE_STRING_DATA_ITEM [4] "T_instance_of_4.java"
+    14 54 5F 69 6E 73 74 61 6E 63 65 5F 6F 66 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 415, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 418, len 4: TYPE_STRING_DATA_ITEM [6] "VL"
+    02 56 4C 00 
+// parsed: offset 422, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/instance_of/d/T_instance_of_4;"
+    // parsed: offset 427, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 428, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 429, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 430, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 431, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 432, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 435, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 437, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 438, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 439, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 441, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 444, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 448, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 460, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 472, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 484, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 496, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 508, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 520, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 532, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 288 (0x000120)
+        01 10 00 00 01 00 00 00 20 01 00 00 
+    // parsed: offset 544, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 294 (0x000126)
+        02 20 00 00 08 00 00 00 26 01 00 00 
+    // parsed: offset 556, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 427 (0x0001ab)
+        00 20 00 00 01 00 00 00 AB 01 00 00 
+    // parsed: offset 568, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 444 (0x0001bc)
+        00 10 00 00 01 00 00 00 BC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.d
new file mode 100644
index 0000000..eac21b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_instance_of_5.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+       const v3, 1234
+       instance-of v1, v3, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.d
new file mode 100644
index 0000000..4c2e649
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_instance_of_6.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+
+       instance-of v0, v5, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.d
new file mode 100644
index 0000000..f0823e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_instance_of_7.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       instance-of v0, v5, dot/junit/opcodes/instance_of/Test_instance_ofN
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.java
new file mode 100644
index 0000000..adcd6f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.instance_of.d;
+
+public class T_instance_of_7 {
+
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.d
new file mode 100644
index 0000000..2853ade
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/instance_of/d/T_instance_of_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_instance_of_8.java
+.class public dot.junit.opcodes.instance_of.d.T_instance_of_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+       const-wide v0, 1234
+       check-cast v0, java/lang/String
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/Test_int_to_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/Test_int_to_byte.java
new file mode 100644
index 0000000..55e07fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/Test_int_to_byte.java
@@ -0,0 +1,199 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_byte.d.T_int_to_byte_1;
+import dot.junit.opcodes.int_to_byte.d.T_int_to_byte_5;
+
+
+public class Test_int_to_byte extends DxTestCase {
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-1, t.run(-1));
+    }
+
+    /**
+     * @title Argument = 16
+     */
+    public void testN3() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(16, t.run(16));
+    }
+
+    /**
+     * @title Argument = -32
+     */
+    public void testN4() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-32, t.run(-32));
+    }
+
+    /**
+     * @title Argument = 134
+     */
+    public void testN5() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-122, t.run(134));
+    }
+
+    
+    /**
+     * @title Argument = -134
+     */
+    public void testN6() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(122, t.run(-134));
+    }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to byte makes no sense but shall not crash the VM.  
+     */
+
+    public void testN7() {
+        T_int_to_byte_5 t = new T_int_to_byte_5();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Argument = 127
+     */
+    public void testB1() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(127, t.run(127));
+    }
+
+    /**
+     * @title Argument = 128
+     */
+    public void testB2() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-128, t.run(128));
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Argument = -128
+     */
+    public void testB4() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-128, t.run(-128));
+    }
+
+    /**
+     * @title Argument = -129
+     */
+    public void testB5() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(127, t.run(-129));
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB6() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB7() {
+        T_int_to_byte_1 t = new T_int_to_byte_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE));
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_byte.d.T_int_to_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_byte.d.T_int_to_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_byte.d.T_int_to_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_byte.d.T_int_to_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.d
new file mode 100644
index 0000000..bfbd201
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_byte_1.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       int-to-byte v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.java
new file mode 100644
index 0000000..1397f49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_byte.d;
+
+public class T_int_to_byte_1 {
+
+    public byte run(int a) {
+        return (byte) a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.d
new file mode 100644
index 0000000..6d18c51
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_byte_2.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       const-wide v0, 3.14
+       int-to-byte v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.d
new file mode 100644
index 0000000..6136a49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_byte_3.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       const-wide v0, 1234
+       int-to-byte v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.d
new file mode 100644
index 0000000..5049465
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_byte_4.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       int-to-byte v2, v3
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.d
new file mode 100644
index 0000000..78fa37c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_byte_5.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)B
+.limit regs 5
+
+       int-to-byte v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.java
new file mode 100644
index 0000000..7580b7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_byte.d;
+
+public class T_int_to_byte_5 {
+
+    public byte run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.d
new file mode 100644
index 0000000..66b3071
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_byte/d/T_int_to_byte_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_byte_6.java
+.class public dot.junit.opcodes.int_to_byte.d.T_int_to_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)B
+.limit regs 5
+
+       int-to-byte v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/Test_int_to_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/Test_int_to_char.java
new file mode 100644
index 0000000..b426473
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/Test_int_to_char.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_char.d.T_int_to_char_1;
+import dot.junit.opcodes.int_to_char.d.T_int_to_char_5;
+
+
+public class Test_int_to_char extends DxTestCase {
+    /**
+     * @title Argument = 65
+     */
+    public void testN1() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('A', t.run(65));
+    }
+
+    /**
+     * @title Argument = 65537
+     */
+    public void testN2() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\u0001', t.run(65537));
+    }
+
+    /**
+     * @title Argument = -2
+     */
+    public void testN3() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\ufffe', t.run(-2));
+    }
+
+    /**
+     * @title Argument = 0x110000
+     */
+    public void testN4() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\u0000', t.run(0x110000));
+    }
+
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to char makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_int_to_char_5 t = new T_int_to_char_5();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\u0000', t.run(0));
+    }
+
+    /**
+     * @title Argument = 65535
+     */
+    public void testB2() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\uffff', t.run(65535));
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB3() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\uffff', t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_int_to_char_1 t = new T_int_to_char_1();
+        assertEquals('\u0000', t.run(Integer.MIN_VALUE));
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_char.d.T_int_to_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_char.d.T_int_to_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_char.d.T_int_to_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_char.d.T_int_to_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.d
new file mode 100644
index 0000000..c469970
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_char_1.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       int-to-char v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.java
new file mode 100644
index 0000000..42ad201
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_char.d;
+
+public class T_int_to_char_1 {
+
+    public char run(int a) {
+        return (char) a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.d
new file mode 100644
index 0000000..df98cf1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_char_2.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       const-wide v0, 3.14
+       int-to-char v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.d
new file mode 100644
index 0000000..e67ac88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_char_3.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       const-wide v0, 1234
+       int-to-char v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.d
new file mode 100644
index 0000000..72477b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_char_4.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       int-to-char v2, v3
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.d
new file mode 100644
index 0000000..c00482b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_char_5.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)C
+.limit regs 5
+
+       int-to-char v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.java
new file mode 100644
index 0000000..7ebbc1a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_char.d;
+
+public class T_int_to_char_5 {
+
+    public char run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.d
new file mode 100644
index 0000000..91c0397
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_char/d/T_int_to_char_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_char_6.java
+.class public dot.junit.opcodes.int_to_char.d.T_int_to_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)C
+.limit regs 5
+
+       int-to-char v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/Test_int_to_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/Test_int_to_double.java
new file mode 100644
index 0000000..ae32560
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/Test_int_to_double.java
@@ -0,0 +1,139 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_double.d.T_int_to_double_1;
+import dot.junit.opcodes.int_to_double.d.T_int_to_double_6;
+
+
+public class Test_int_to_double extends DxTestCase {
+    /**
+     * @title Argument = 300000000
+     */
+    public void testN1() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(300000000d, t.run(300000000), 0d);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(1d, t.run(1), 0d);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(-1d, t.run(-1), 0d);
+    }
+
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to double makes no sense but shall not crash the VM.  
+     */
+
+    public void testN8() {
+        T_int_to_double_6 t = new T_int_to_double_6();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(2147483647d, t.run(Integer.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(-2147483648d, t.run(Integer.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_int_to_double_1 t = new T_int_to_double_1();
+        assertEquals(0d, t.run(0), 0d);
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_double.d.T_int_to_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_double.d.T_int_to_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_double.d.T_int_to_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_double.d.T_int_to_double_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.d
new file mode 100644
index 0000000..19a17f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_double_1.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       int-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.java
new file mode 100644
index 0000000..5277313
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_double.d;
+
+public class T_int_to_double_1 {
+
+    public double run(int a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.d
new file mode 100644
index 0000000..adc6bfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_double_3.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       const-wide v4, 123455    
+
+       int-to-double v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.d
new file mode 100644
index 0000000..51f6966
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_double_4.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 1
+
+       const v0, 1234
+       int-to-double v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.d
new file mode 100644
index 0000000..9d8382d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_double_5.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       int-to-double v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.d
new file mode 100644
index 0000000..529f23e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_double_6.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 6
+
+       int-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.java
new file mode 100644
index 0000000..213dc7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_double.d;
+
+public class T_int_to_double_6 {
+
+    public double run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.d
new file mode 100644
index 0000000..06b12b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_double/d/T_int_to_double_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_double_7.java
+.class public dot.junit.opcodes.int_to_double.d.T_int_to_double_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 6
+
+       int-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/Test_int_to_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/Test_int_to_float.java
new file mode 100644
index 0000000..8b6e978
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/Test_int_to_float.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_float.d.T_int_to_float_1;
+import dot.junit.opcodes.int_to_float.d.T_int_to_float_5;
+
+public class Test_int_to_float extends DxTestCase {
+    /**
+     * @title Argument = 123456
+     */
+    public void testN1() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(123456f, t.run(123456), 0f);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(1f, t.run(1), 0f);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(-1f, t.run(-1), 0f);
+    }
+
+    /**
+     * @title Argument = 33564439
+     */
+    public void testN4() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(3.356444E7f, t.run(33564439), 0f);
+    }
+
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to float makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_int_to_float_5 t = new T_int_to_float_5();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+        
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(0f, t.run(0), 0f);
+    }
+
+    /**
+     * @title Argument = Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(2147483650f, t.run(Integer.MAX_VALUE), 0f);
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_int_to_float_1 t = new T_int_to_float_1();
+        assertEquals(-2147483650f, t.run(Integer.MIN_VALUE), 0f);
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  (type of argument - double)
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_float.d.T_int_to_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_float.d.T_int_to_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_float.d.T_int_to_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_float.d.T_int_to_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.d
new file mode 100644
index 0000000..16b6f1a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_float_1.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       int-to-float v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.java
new file mode 100644
index 0000000..777d81e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_float.d;
+
+public class T_int_to_float_1 {
+
+    public float run(int a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.d
new file mode 100644
index 0000000..c2fdf91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_float_2.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       const-wide v0, 3.14
+       int-to-float v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.d
new file mode 100644
index 0000000..4f16417
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_float_3.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       const-wide v0, 1234
+       int-to-float v2, v0
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.d
new file mode 100644
index 0000000..e31d685d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_float_4.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       int-to-float v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.d
new file mode 100644
index 0000000..c5bd602
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_float_5.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.limit regs 5
+
+       int-to-float v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.java
new file mode 100644
index 0000000..3324016
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_float.d;
+
+public class T_int_to_float_5 {
+
+    public float run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.d
new file mode 100644
index 0000000..37db947
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_float/d/T_int_to_float_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_float_6.java
+.class public dot.junit.opcodes.int_to_float.d.T_int_to_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       int-to-float v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/Test_int_to_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/Test_int_to_long.java
new file mode 100644
index 0000000..3147723
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/Test_int_to_long.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_long.d.T_int_to_long_1;
+import dot.junit.opcodes.int_to_long.d.T_int_to_long_6;
+
+public class Test_int_to_long extends DxTestCase {
+    /**
+     * @title Argument = 123456
+     */
+    public void testN1() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(123456l, t.run(123456));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(1l, t.run(1));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(-1l, t.run(-1));
+    }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN8() {
+        T_int_to_long_6 t = new T_int_to_long_6();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(0l, t.run(0));
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(2147483647l, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_int_to_long_1 t = new T_int_to_long_1();
+        assertEquals(-2147483648l, t.run(Integer.MIN_VALUE));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_long.d.T_int_to_long_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.d
new file mode 100644
index 0000000..4f91de2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_long_1.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       int-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.java
new file mode 100644
index 0000000..03becc7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_long.d;
+
+public class T_int_to_long_1 {
+
+    public long run(int a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.d
new file mode 100644
index 0000000..eab475b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_long_2.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       const-wide v4, 3.1415    
+
+       int-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.d
new file mode 100644
index 0000000..05527d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_long_3.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       const-wide v4, 123455    
+
+       int-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.d
new file mode 100644
index 0000000..9f26670
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_long_4.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 1
+
+       const v0, 1234
+       int-to-long v0, v0
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.d
new file mode 100644
index 0000000..f006048
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_long_5.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       int-to-long v0, v4
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.d
new file mode 100644
index 0000000..f71a28d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_long_6.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 6
+
+       int-to-long v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.java
new file mode 100644
index 0000000..da307c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_long.d;
+
+public class T_int_to_long_6 {
+
+    public long run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.d
new file mode 100644
index 0000000..c2db686
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_long/d/T_int_to_long_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_long_7.java
+.class public dot.junit.opcodes.int_to_long.d.T_int_to_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 6
+
+       int-to-long v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/Test_int_to_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/Test_int_to_short.java
new file mode 100644
index 0000000..7e4c6a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/Test_int_to_short.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.int_to_short.d.T_int_to_short_1;
+import dot.junit.opcodes.int_to_short.d.T_int_to_short_5;
+
+public class Test_int_to_short extends DxTestCase {
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(-1, t.run(-1));
+    }
+
+    /**
+     * @title Argument = 32767
+     */
+    public void testN3() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(32767, t.run(32767));
+    }
+
+    /**
+     * @title Argument = -32768
+     */
+    public void testN4() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(-32768, t.run(-32768));
+    }
+
+    /**
+     * @title Argument = -32769
+     */
+    public void testN5() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(32767, t.run(-32769));
+    }
+
+    /**
+     * @title Argument = 32768
+     */
+    public void testN6() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(-32768, t.run(32768));
+    }
+
+    /**
+     * @title Argument = 0x10fedc;
+     */
+    public void testN7() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(0xfffffedc, t.run(0x10fedc));
+    }
+
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this conversion of float to short makes no sense but shall not crash the VM.  
+     */
+
+    public void testN8() {
+        T_int_to_short_5 t = new T_int_to_short_5();
+        try {
+            t.run(1.333f);
+        } catch (Throwable e) {
+        }
+    } 
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB3() {
+        T_int_to_short_1 t = new T_int_to_short_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_short.d.T_int_to_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_short.d.T_int_to_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_short.d.T_int_to_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.int_to_short.d.T_int_to_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.d
new file mode 100644
index 0000000..fcf1727
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_short_1.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       int-to-short v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.java
new file mode 100644
index 0000000..2188088
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_short.d;
+
+public class T_int_to_short_1 {
+
+    public short run(int a) {
+        return (short)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.d
new file mode 100644
index 0000000..9c1154b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_short_2.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       const-wide v0, 3.14
+       int-to-short v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.d
new file mode 100644
index 0000000..5f83549
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_short_3.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       const-wide v0, 1234
+       int-to-short v2, v0
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.d
new file mode 100644
index 0000000..147fb66
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_short_4.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       int-to-short v2, v3
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.d
new file mode 100644
index 0000000..8ca83e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_short_5.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)S
+.limit regs 5
+
+       int-to-short v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.java
new file mode 100644
index 0000000..2749fc0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.int_to_short.d;
+
+public class T_int_to_short_5 {
+
+    public short run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.d
new file mode 100644
index 0000000..8d6f0ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/int_to_short/d/T_int_to_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_int_to_short_6.java
+.class public dot.junit.opcodes.int_to_short.d.T_int_to_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)S
+.limit regs 5
+
+       int-to-short v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TAbstract.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TAbstract.java
new file mode 100644
index 0000000..f6d0ed0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TAbstract.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct;
+
+public abstract class TAbstract {
+    protected abstract int toInt();
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TPlain.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TPlain.java
new file mode 100644
index 0000000..a6db3d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TPlain.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct;
+
+public class TPlain {
+    public int toInt() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TSuper.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TSuper.java
new file mode 100644
index 0000000..03026ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/TSuper.java
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct;
+
+/**
+ * @author fjost
+ *
+ */
+public class TSuper {
+    public int val;
+    
+    public int toInt() {
+        return 5;
+    }
+    
+    public int toInt(float v) {
+        return (int)v;
+    }
+    
+    public int testArgsOrder(int a, int b) {
+        return a/b;
+    }
+    
+    public native int toIntNative();
+    
+    public static int toIntStatic() {
+        return 5;
+    }
+    
+    protected int toIntP() {
+        return 5;
+    }
+    
+    private int toIntPvt() {
+        return 5;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/Test_invoke_direct.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/Test_invoke_direct.java
new file mode 100644
index 0000000..e7c6a0b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/Test_invoke_direct.java
@@ -0,0 +1,337 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_12;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_13;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_16;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_2;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_21;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_6;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_7;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_8;
+import dot.junit.opcodes.invoke_direct.d.T_invoke_direct_9;
+
+public class Test_invoke_direct extends DxTestCase {
+
+    /**
+     * @title private method call
+     */
+    public void testN2() {
+        T_invoke_direct_2 t = new T_invoke_direct_2();
+        assertEquals(345, t.run());
+    }
+
+
+    /**
+     * @title Check that new frame is created by invoke_direct
+     */
+    public void testN7() {
+        T_invoke_direct_21 t = new T_invoke_direct_21();
+        assertEquals(1, t.run());
+    }
+
+
+
+    /**
+     * @title objref is null
+     */
+    public void testE3() {
+        T_invoke_direct_8 t = new T_invoke_direct_8();
+        try {
+            assertEquals(5, t.run());
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE5() {
+        T_invoke_direct_9 t = new T_invoke_direct_9();
+        try {
+            assertEquals(5, t.run());
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title invoke-direct may not be used to invoke &lt;clinit&gt;
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B4
+     * @title invoke-direct target must be in self or superclass
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_6
+        //@uses dot.junit.opcodes.invoke_direct.TSuper
+        try {
+            new T_invoke_direct_6();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title int is passed instead of obj ref
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B9
+     * @title number of arguments passed to method
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing protected method
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_25
+        //@uses dot.junit.opcodes.invoke_direct.TPlain
+        //@uses dot.junit.opcodes.invoke_direct.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B5
+     * @title  Superclass' method call
+     */
+    public void testVFE11() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_25
+        //@uses dot.junit.opcodes.invoke_direct.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method.
+     */
+    public void testVFE13() {
+        try {
+            new T_invoke_direct_7().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE14() {
+        try {
+            new T_invoke_direct_16().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke static method. Java throws IncompatibleClassChangeError
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of superclass.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_12
+        //@uses dot.junit.opcodes.invoke_direct.TSuper
+        try {
+            new T_invoke_direct_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke abstract method
+     */
+    public void testVFE17() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_13
+        //@uses dot.junit.opcodes.invoke_direct.TAbstract
+        try {
+            new T_invoke_direct_13().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B5
+     * @title An instance initializer must only be invoked on an uninitialized instance.
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B8
+     * @title attempt to access inherited instance field before <init> is called
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.invoke_direct.d.T_invoke_direct_18
+        //@uses dot.junit.opcodes.invoke_direct.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title attempt to invoke interface method
+     */
+    public void testVFE20() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_26");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE21() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct.d.T_invoke_direct_27");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.d
new file mode 100644
index 0000000..65a8a32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_1.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_1
+.super dot/junit/opcodes/invoke_direct/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/TSuper/toInt()I
+       move-result v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.java
new file mode 100644
index 0000000..b692683
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct.d;
+
+import dot.junit.opcodes.invoke_direct.TSuper;
+
+public class T_invoke_direct_1 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.d
new file mode 100644
index 0000000..08b22c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_10.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v0, 1222
+       invoke-direct {v0}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_10/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.d
new file mode 100644
index 0000000..6566718
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_11.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_11.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot.junit.opcodes.invoke_direct.d.T_invoke_direct_11/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
+.method private static toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d
new file mode 100644
index 0000000..6230fa9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_12.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_12
+.super dot/junit/opcodes/invoke_direct/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.java
new file mode 100644
index 0000000..2911abf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_12.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_direct.d;
+
+
+public class T_invoke_direct_12 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.d
new file mode 100644
index 0000000..23d4378
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_13.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_13
+.super dot/junit/opcodes/invoke_direct/TAbstract
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TAbstract/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/TAbstract/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.java
new file mode 100644
index 0000000..df8d0d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_direct.d;
+
+
+public class T_invoke_direct_13 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.d
new file mode 100644
index 0000000..4d10ce8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_14.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v3, 50
+       const v4, 25
+       
+       invoke-direct {v6, v3}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_14/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.d
new file mode 100644
index 0000000..55b7d3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_15.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v3}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_15/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.d
new file mode 100644
index 0000000..10e041d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_16.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16/toInt()F
+       
+       const/4 v1, 0
+       return v1
+.end method
+
+
+.method private toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.java
new file mode 100644
index 0000000..cae7ae8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_direct.d;
+
+
+public class T_invoke_direct_16 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.d
new file mode 100644
index 0000000..35a54d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_17.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       new-instance v0, java/lang/String
+       invoke-direct {v0} java/lang/String/<init>()V
+         invoke-direct {v0} java/lang/String/<init>()V
+       return-void       
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.d
new file mode 100644
index 0000000..602cbeb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_18.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_18.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_18
+.super dot/junit/opcodes/invoke_direct/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       const v0, 0
+       iput v0, v1, dot.junit.opcodes.invoke_direct.d.T_invoke_direct_18.val I
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.d
new file mode 100644
index 0000000..0c11388
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_2.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.java
new file mode 100644
index 0000000..ab6e1ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_2.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_2 {
+
+    public int run() {
+        return getInt();
+    }
+
+    private int getInt() {
+        return 345;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.d
new file mode 100644
index 0000000..d6653fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_21.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v3, 50
+       const v4, 25
+       
+       invoke-direct {v6, v3, v4}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.java
new file mode 100644
index 0000000..cec52ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_21.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_21 {
+
+    
+    private int test(int a, int b) {
+        int i = 999;
+        int j = 888;
+        int k = 777;
+        return a / b;
+    }
+    
+    public int run() {
+        int i = 111;
+        int j = 222;
+        int k = 333;
+        test(50, 25);
+        
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.d
new file mode 100644
index 0000000..83fd3db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_24.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_24
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       
+       const-wide v3, 50
+       
+       invoke-direct {v6, v3, v4}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_24/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.d
new file mode 100644
index 0000000..8d872ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_25.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_25
+.super dot/junit/opcodes/invoke_direct/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/<init>()V
+       return-void
+.end method
+
+.method private test()V
+    return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_direct/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/TPlain/<init>()V
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_25/test()V
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.d
new file mode 100644
index 0000000..40cce50
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_26.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 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.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_direct.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_direct.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_direct.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_direct_26.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_26
+.super dot/junit/opcodes/invoke_direct/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-direct {v7}, dot/junit/opcodes/invoke_direct/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.d
new file mode 100644
index 0000000..0ac6b37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_27.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_27
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()V
+    return-void
+.end method
+
+.method public static run()V
+.limit regs 3
+
+       new-instance v0, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27
+       
+       invoke-direct {v0}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_27/test()V
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.d
new file mode 100644
index 0000000..6aa7821
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_3.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dfh
new file mode 100644
index 0000000..993ee4e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dfh
@@ -0,0 +1,285 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b8124ca4
+    A4 4C 12 B8 
+// parsed: offset 12, len 20: signature           : 70e1...b983
+    70 E1 1F B5 6C 1D F3 77 2E 7D E3 42 02 A1 DA DC 85 4D B9 83 
+// parsed: offset 32, len 4: file_size           : 592
+    50 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 344
+    58 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 324 (0x000144) "<init>"
+    44 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 332 (0x00014c) "I"
+    4C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 335 (0x00014f) "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+    4F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 390 (0x000186) "Ljava/lang/Object;"
+    86 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 410 (0x00019a) "T_invoke_direct_3.java"
+    9A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 434 (0x0001b2) "V"
+    B2 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 437 (0x0001b5) "getInt"
+    B5 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 445 (0x0001bd) "run"
+    BD 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "getInt"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [3] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_invoke_direct_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 450 (0x0001c2)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 C2 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3.<init>"
+    // parsed: offset 248, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3.getInt"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: const/16 v1, #int 345 // #0x159
+            13 01 59 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct.d.T_invoke_direct_3.run"
+    // parsed: offset 296, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 298, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 300, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 302, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 304, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 308, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 312, len 6: |0000: invoke-direct {v2}, Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;.getInt:()I // method@0001
+//@mod            70 10 01 00 02 00 
+            70 10 01 01 02 00 
+        // parsed: offset 318, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 320, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 322, len 2: PADDING
+    00 00 
+// parsed: offset 324, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 332, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 335, len 55: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 33 3B 00 
+// parsed: offset 390, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 410, len 24: TYPE_STRING_DATA_ITEM [4] "T_invoke_direct_3.java"
+    16 54 5F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 434, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 437, len 8: TYPE_STRING_DATA_ITEM [6] "getInt"
+    06 67 65 74 49 6E 74 00 
+// parsed: offset 445, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_direct/d/T_invoke_direct_3;"
+    // parsed: offset 450, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 451, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 452, len 1: direct_methods_size: 2
+        02 
+    // parsed: offset 453, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 454, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 455, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 458, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+        // method [1]:
+            // parsed: offset 460, len 1: method_idx_diff: 1 (method_idx: 1 "getInt")
+                01 
+            // parsed: offset 461, len 1: access_flags: 0x000002 (PRIVATE)
+                02 
+            // parsed: offset 462, len 2: code_off: 272 (0x000110)
+                90 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 464, len 1: method_idx_diff: 2 (method_idx: 2 "run")
+                02 
+            // parsed: offset 465, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 466, len 2: code_off: 296 (0x000128)
+                A8 02 
+// map_list:
+    // parsed: offset 468, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 04 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 03 00 00 00 F8 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 324 (0x000144)
+        02 20 00 00 08 00 00 00 44 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 450 (0x0001c2)
+        00 20 00 00 01 00 00 00 C2 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d
new file mode 100644
index 0000000..e6e7511
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_4.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_4
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+    invoke-direct {v0}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_4/<clinit>()V
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.d
new file mode 100644
index 0000000..c4dac34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_5.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_5/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.d
new file mode 100644
index 0000000..6bb8833
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.d
@@ -0,0 +1,27 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_6.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V    
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/TSuper/toIntPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.java
new file mode 100644
index 0000000..6f95a12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_6.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_6 {
+    public T_invoke_direct_6() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.d
new file mode 100644
index 0000000..2c1b99b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_7.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7/toInt()I
+       const v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.java
new file mode 100644
index 0000000..b640fa3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_direct.d;
+
+
+public class T_invoke_direct_7 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.d
new file mode 100644
index 0000000..99b510b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_8.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/4 v1, 0
+       invoke-direct {v1}, dot.junit.opcodes.invoke_direct.d.T_invoke_direct_8/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.java
new file mode 100644
index 0000000..8c9825d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_8 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.d
new file mode 100644
index 0000000..262b5ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_9.java
+.class public dot.junit.opcodes.invoke_direct.d.T_invoke_direct_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct {v2}, dot.junit.opcodes.invoke_direct.d.T_invoke_direct_9/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private native toInt()I
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.java
new file mode 100644
index 0000000..c0913ab5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct/d/T_invoke_direct_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct.d;
+
+public class T_invoke_direct_9 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TAbstract.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TAbstract.java
new file mode 100644
index 0000000..8c5ab27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TAbstract.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct_range;
+
+public abstract class TAbstract {
+    protected abstract int toInt();
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TPlain.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TPlain.java
new file mode 100644
index 0000000..3e4aab1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TPlain.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct_range;
+
+public class TPlain {
+    public int toInt() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TSuper.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TSuper.java
new file mode 100644
index 0000000..c8cbc0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/TSuper.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct_range;
+
+/**
+ * @author fjost
+ *
+ */
+public class TSuper {
+    public int val;
+    public int toInt() {
+        return 5;
+    }
+
+    public int toInt(float v) {
+        return (int)v;
+    }
+
+    public int testArgsOrder(int a, int b) {
+        return a/b;
+    }
+
+    public native int toIntNative();
+
+    public static int toIntStatic() {
+        return 5;
+    }
+
+    protected int toIntP() {
+        return 5;
+    }
+
+    private int toIntPvt() {
+        return 5;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/Test_invoke_direct_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/Test_invoke_direct_range.java
new file mode 100644
index 0000000..1682c68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/Test_invoke_direct_range.java
@@ -0,0 +1,338 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_12;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_13;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_16;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_2;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_21;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_6;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_7;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_8;
+import dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_9;
+
+public class Test_invoke_direct_range extends DxTestCase {
+
+    /**
+     * @title private method call
+     */
+    public void testN2() {
+        T_invoke_direct_range_2 t = new T_invoke_direct_range_2();
+        assertEquals(345, t.run());
+    }
+
+
+    /**
+     * @title Check that new frame is created by invoke_direct_range
+     */
+    public void testN7() {
+        T_invoke_direct_range_21 t = new T_invoke_direct_range_21();
+        assertEquals(1, t.run());
+    }
+
+
+
+    /**
+     * @title objref is null
+     */
+    public void testE3() {
+        T_invoke_direct_range_8 t = new T_invoke_direct_range_8();
+        try {
+            assertEquals(5, t.run());
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE5() {
+        T_invoke_direct_range_9 t = new T_invoke_direct_range_9();
+        try {
+            assertEquals(5, t.run());
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title invoke-direct may not be used to invoke &lt;clinit&gt;
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B4
+     * @title invoke-direct target must be in self or superclass
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_6
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper
+        try {
+            new T_invoke_direct_range_6();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title int is passed instead of obj ref
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B9
+     * @title number of arguments passed to method
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing protected method
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_25
+        //@uses dot.junit.opcodes.invoke_direct_range.TPlain
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B5
+     * @title  Superclass' method call
+     */
+    public void testVFE11() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_25
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method.
+     */
+    public void testVFE13() {
+        try {
+            new T_invoke_direct_range_7().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE14() {
+        try {
+            new T_invoke_direct_range_16().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke static method. Java throws IncompatibleClassChangeError
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of superclass. Java throws IllegalAccessError
+     * on first access but Dalvik throws VerifyError on class loading.
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_12
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper
+        try {
+            new T_invoke_direct_range_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke abstract method
+     */
+    public void testVFE17() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_13
+        //@uses dot.junit.opcodes.invoke_direct_range.TAbstract
+        try {
+            new T_invoke_direct_range_13().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B5
+     * @title An instance initializer must only be invoked on an uninitialized instance.
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B8
+     * @title attempt to access inherited instance field before <init> is called
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_18
+        //@uses dot.junit.opcodes.invoke_direct_range.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title attempt to invoke interface method
+     */
+    public void testVFE20() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_26");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE21() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_27");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.d
new file mode 100644
index 0000000..7123eb9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_1.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_1
+.super dot/junit/opcodes/invoke_direct_range/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/TSuper/toInt()I
+       move-result v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.java
new file mode 100644
index 0000000..243b923
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_1.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct_range.d;
+
+import dot.junit.opcodes.invoke_direct_range.TSuper;
+
+public class T_invoke_direct_range_1 extends TSuper {
+
+    public int run() {
+        return super.toInt();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.d
new file mode 100644
index 0000000..2dcf576
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_10.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v0, 1222
+       invoke-direct/range {v0}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_10/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.d
new file mode 100644
index 0000000..772fc10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_11.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_11.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_11/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
+.method private static toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d
new file mode 100644
index 0000000..a107ac3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_12.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_12
+.super dot/junit/opcodes/invoke_direct_range/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.java
new file mode 100644
index 0000000..e01b4f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_12 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.d
new file mode 100644
index 0000000..830c367
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_13.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_13
+.super dot/junit/opcodes/invoke_direct_range/TAbstract
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TAbstract/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/TAbstract/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.java
new file mode 100644
index 0000000..39c9977
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_13 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.d
new file mode 100644
index 0000000..a59d5ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_14.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v4, 50
+       const v5, 25
+       move-object v3, v6
+       invoke-direct/range {v3..v4}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_14/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.d
new file mode 100644
index 0000000..343eafd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_15.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v3}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_15/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.d
new file mode 100644
index 0000000..82b85d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_16.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16/toInt()F
+       
+       const/4 v1, 0
+       return v1
+.end method
+
+
+.method private toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.java
new file mode 100644
index 0000000..c593d95
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_16.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_16 {
+    public int run() {
+        return 0;
+    }
+
+    private int toInt() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.d
new file mode 100644
index 0000000..add1dc9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_17.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       new-instance v0, java/lang/String
+       invoke-direct/range {v0} java/lang/String/<init>()V
+         invoke-direct/range {v0} java/lang/String/<init>()V
+       return-void       
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.d
new file mode 100644
index 0000000..3922d1b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_18.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_18.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_18
+.super dot/junit/opcodes/invoke_direct_range/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       const v0, 0
+       iput v0, v1, dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_18.val I
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.d
new file mode 100644
index 0000000..3d4e23c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_2.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.java
new file mode 100644
index 0000000..09fa293
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_2.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_2 {
+
+    public int run() {
+        return getInt();
+    }
+
+    private int getInt() {
+        return 345;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.d
new file mode 100644
index 0000000..234de66
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_21.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct/range {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       const v4, 50
+       const v5, 25
+         move-object v3, v6
+       invoke-direct/range {v3..v5}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.java
new file mode 100644
index 0000000..537d238
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_21.java
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_21 {
+
+    
+    private int test(int a, int b) {
+        int i = 999;
+        int j = 888;
+        int k = 777;
+        return a / b;
+    }
+    
+    public int run() {
+        int i = 111;
+        int j = 222;
+        int k = 333;
+        test(50, 25);
+        
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.d
new file mode 100644
index 0000000..31a24c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_24.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_24
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test(II)I
+.limit regs 7
+       const v0, 999
+       const v1, 888
+       const v2, 777
+       
+       div-int v4, v5, v6
+       
+       return v4
+.end method
+
+.method public run()I
+.limit regs 7
+       const v0, 111
+       const v1, 222
+       const v2, 333
+       
+       
+       const-wide v4, 50
+          move-object v3, v6
+       invoke-direct {v3..v5}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_24/test(II)I
+       move-result v3
+       
+       const v4, 2
+       if-ne v3, v4, Label30
+       
+       const v4, 111
+       if-ne v0, v4, Label30
+       
+       const v4, 222
+       if-ne v1, v4, Label30
+       
+       const v4, 333
+       if-ne v2, v4, Label30
+
+       const v0, 1       
+       return v0
+Label30:
+        const v0, 0
+        return v0
+        
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.d
new file mode 100644
index 0000000..6c2334e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_25.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_25
+.super dot/junit/opcodes/invoke_direct_range/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/<init>()V
+       return-void
+.end method
+
+.method private test()V
+    return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_direct_range/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_direct_range/TPlain/<init>()V
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_25/test()V
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.d
new file mode 100644
index 0000000..6160fe5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_26.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 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.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_direct_range.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_direct_range.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_direct_range.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_direct_range_26.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_26
+.super dot/junit/opcodes/invoke_direct_range/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_direct_range/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-direct/range {v7}, dot/junit/opcodes/invoke_direct_range/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.d
new file mode 100644
index 0000000..1073241
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_27.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_27
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()V
+    return-void
+.end method
+
+.method public static run()V
+.limit regs 3
+
+       new-instance v0, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27
+       
+       invoke-direct/range {v0}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_27/test()V
+       
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.d
new file mode 100644
index 0000000..056f2c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_3.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dfh
new file mode 100644
index 0000000..9772f88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dfh
@@ -0,0 +1,287 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c60753cb
+    CB 53 07 C6 
+// parsed: offset 12, len 20: signature           : 556e...6eba
+    55 6E A2 8D 60 66 C0 56 70 4C 6B 33 11 26 64 F4 F4 94 6E BA 
+// parsed: offset 32, len 4: file_size           : 612
+    64 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 364
+    6C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 324 (0x000144) "<init>"
+    44 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 332 (0x00014c) "I"
+    4C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 335 (0x00014f) "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+    4F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 402 (0x000192) "Ljava/lang/Object;"
+    92 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 422 (0x0001a6) "T_invoke_direct_range_3.java"
+    A6 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 452 (0x0001c4) "V"
+    C4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 455 (0x0001c7) "getInt"
+    C7 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "getInt"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [3] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_invoke_direct_range_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3.<init>"
+    // parsed: offset 248, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3.getInt"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: const/16 v1, #int 345 // #0x159
+            13 01 59 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// CODE_ITEM for "dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_3.run"
+    // parsed: offset 296, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 298, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 300, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 302, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 304, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 308, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 312, len 6: |0000: invoke-direct/range {v2..v2}, Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;.getInt:()I // method@0001
+//@mod            76 01 01 00 02 00 
+            76 01 01 01 02 00 
+        // parsed: offset 318, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 320, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 322, len 2: PADDING
+    00 00 
+// parsed: offset 324, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 332, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 335, len 67: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+    41 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 72 61 6E 67 65 5F 33 3B 00 
+// parsed: offset 402, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 422, len 30: TYPE_STRING_DATA_ITEM [4] "T_invoke_direct_range_3.java"
+    1C 54 5F 69 6E 76 6F 6B 65 5F 64 69 72 65 63 74 5F 72 61 6E 67 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 452, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 455, len 8: TYPE_STRING_DATA_ITEM [6] "getInt"
+    06 67 65 74 49 6E 74 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_3;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 2
+        02 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+        // method [1]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "getInt")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000002 (PRIVATE)
+                02 
+            // parsed: offset 480, len 2: code_off: 272 (0x000110)
+                90 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 482, len 1: method_idx_diff: 2 (method_idx: 2 "run")
+                02 
+            // parsed: offset 483, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 484, len 2: code_off: 296 (0x000128)
+                A8 02 
+// parsed: offset 486, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 488, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 04 00 00 00 B8 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 03 00 00 00 F8 00 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 324 (0x000144)
+        02 20 00 00 08 00 00 00 44 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.d
new file mode 100644
index 0000000..a7aeae9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_4.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_4
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+    invoke-direct/range {v0}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_4/<clinit>()V
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.d
new file mode 100644
index 0000000..4ec85bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_5.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_5/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.d
new file mode 100644
index 0000000..cda9caf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.d
@@ -0,0 +1,27 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_6.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V    
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/TSuper/toIntPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.java
new file mode 100644
index 0000000..b1e3a6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_6.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_6 {
+    public T_invoke_direct_range_6() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.d
new file mode 100644
index 0000000..f0254f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_7.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v1}, dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7/toInt()I
+       const v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.java
new file mode 100644
index 0000000..f68ed92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_7 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.d
new file mode 100644
index 0000000..946c65f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_8.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/4 v1, 0
+       invoke-direct/range {v1}, dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_8/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private toInt()I
+.limit regs 1
+    const v0, 0
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.java
new file mode 100644
index 0000000..bde2e71
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_8 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.d
new file mode 100644
index 0000000..567bd84
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_direct_range_9.java
+.class public dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-direct/range {v2}, dot.junit.opcodes.invoke_direct_range.d.T_invoke_direct_range_9/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method private native toInt()I
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.java
new file mode 100644
index 0000000..db73113
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_direct_range/d/T_invoke_direct_range_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_direct_range.d;
+
+public class T_invoke_direct_range_9 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITest.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITest.java
new file mode 100644
index 0000000..79917a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITest.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface;
+
+public interface ITest {
+    public void doit();
+    public void doit(int i);
+    public void doitNative();
+    public int test(int a);
+    public int testArgsOrder(int a, int b);
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITestImpl.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITestImpl.java
new file mode 100644
index 0000000..cf0c0c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITestImpl.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface;
+
+public class ITestImpl implements ITest {
+    public void doit() {
+        // impl
+    }
+
+    public void doit(int i) {
+        //
+    }
+
+    public native void doitNative();
+
+    public int test(int a) {
+        if (a == 999) return 195;
+        return 0;
+    }
+
+    public int testArgsOrder(int a, int b) {
+        return a / b;
+    }
+
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITestImplAbstract.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITestImplAbstract.java
new file mode 100644
index 0000000..af7a36029
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/ITestImplAbstract.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface;
+
+
+public abstract class ITestImplAbstract implements ITest {
+    abstract public void doit();
+    abstract public void doit(int i);
+    public native void doitNative();
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java
new file mode 100644
index 0000000..377cc58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/Test_invoke_interface.java
@@ -0,0 +1,293 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_1;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_11;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_12;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_13;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_14;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_16;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_18;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_20;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_21;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_3;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_4;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_5;
+import dot.junit.opcodes.invoke_interface.d.T_invoke_interface_7;
+
+public class Test_invoke_interface extends DxTestCase {
+
+    /**
+     * @title invoke interface method
+     */
+    public void testN1() {
+        T_invoke_interface_1 t = new T_invoke_interface_1();
+        assertEquals(0, t.run("aa", "aa"));
+        assertEquals(-1, t.run("aa", "bb"));
+        assertEquals(1, t.run("bb", "aa"));
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_interface and
+     * arguments are passed to method
+     */
+    public void testN2() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_14
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        T_invoke_interface_14 t = new T_invoke_interface_14();
+        ITestImpl impl = new ITestImpl();
+        assertEquals(1, t.run(impl));
+    }
+
+
+
+    /**
+     * @title objref is null
+     */
+    public void testE3() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_3
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        try {
+            new T_invoke_interface_3(null);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title object doesn't implement interface
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_11
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        T_invoke_interface_11 t = new T_invoke_interface_11();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_12
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        T_invoke_interface_12 t = new T_invoke_interface_12();
+        ITestImpl impl = new ITestImpl();
+        try {
+            t.run(impl);
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE6() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_13
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        //@uses dot.junit.opcodes.invoke_interface.ITestImplAbstract
+        T_invoke_interface_13 t = new T_invoke_interface_13();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A16
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A16
+     * @title The referenced method_id must belong to an interface (not a class).
+     */
+    public void testVFE2() {
+        try {
+            new T_invoke_interface_4().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        try {
+            new T_invoke_interface_5(new ITestImpl());
+            fail("expected VerifyError");
+        } catch (VerifyError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title int is passed instead of objref
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title number of arguments passed to method
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title invoke-interface may not be used to call <init>.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        //@uses dot.junit.opcodes.invoke_interface.ITestImplAbstract
+        try {
+            new T_invoke_interface_18().run(new ITestImpl());
+            fail("expected InstantiationError");
+        } catch (InstantiationError t) {
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title invoke-interface may not be used to call <clinit>.
+     */
+    public void testVFE11() {
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        try {
+            new T_invoke_interface_20().run(new ITestImpl());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        try {
+            new T_invoke_interface_21().run(new ITestImpl());
+            fail("expected VerifyError");
+        } catch (VerifyError t) {
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_7
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        try {
+            new T_invoke_interface_7().run(new ITestImpl());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_16
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        try {
+            new T_invoke_interface_16().run(new ITestImpl());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE21() {
+        //@uses dot.junit.opcodes.invoke_interface.d.T_invoke_interface_22
+        //@uses dot.junit.opcodes.invoke_interface.ITest
+        //@uses dot.junit.opcodes.invoke_interface.ITestImpl
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface.d.T_invoke_interface_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.d
new file mode 100644
index 0000000..72c1843
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_1.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface {v6, v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.java
new file mode 100644
index 0000000..4e0f991
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface.d;
+
+public class T_invoke_interface_1 {
+
+    public int run(Comparable c, Object o) {
+        return c.compareTo(o);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.d
new file mode 100644
index 0000000..65ca5f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_10.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+       const v6, 1243
+       invoke-interface {v6, v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.d
new file mode 100644
index 0000000..110d826
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_11.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       invoke-interface {v4}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.java
new file mode 100644
index 0000000..1bde245
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface.d;
+
+
+public class T_invoke_interface_11 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.d
new file mode 100644
index 0000000..c623612
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_12.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 5
+
+       invoke-interface {v4}, dot/junit/opcodes/invoke_interface/ITest/doitNative()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.java
new file mode 100644
index 0000000..344e3d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_12.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_12 {
+
+    public void run(ITest test) {
+        test.doitNative();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.d
new file mode 100644
index 0000000..8d696af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_13.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_13
+.super dot/junit/opcodes/invoke_interface/ITestImplAbstract
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_interface/ITestImplAbstract/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 7
+
+       invoke-interface {v6}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.java
new file mode 100644
index 0000000..d0cd67d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface.d;
+
+
+public class T_invoke_interface_13 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.d
new file mode 100644
index 0000000..d6ce02a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.d
@@ -0,0 +1,54 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_14.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)I
+.limit regs 9
+    const v1, 123
+    const v2, 345
+
+    const v4, 64
+    const v5, 2
+    invoke-interface {v8, v4, v5}, dot/junit/opcodes/invoke_interface/ITest/testArgsOrder(II)I
+    move-result v4
+    const v5, 32
+    if-ne v4, v5, Label0
+
+    const v5, 123
+    if-ne v5, v1, Label0
+
+    const v5, 345
+    if-ne v5, v2, Label0
+
+
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.java
new file mode 100644
index 0000000..11a8128
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_14.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_14 {
+
+    public int run(ITest test) {
+        int a = 123;
+        int b = 345;
+        if(test.testArgsOrder(64, 2) == 32)
+        {
+            if(a == 123)
+                if(b == 345)
+                    return 1;
+        }
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.d
new file mode 100644
index 0000000..3c972ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_16.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 6
+
+       const/high16 v3, 1065353216
+       invoke-interface {v5, v3}, dot/junit/opcodes/invoke_interface/ITest/doit(F)V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.java
new file mode 100644
index 0000000..f244ea3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_16.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_16 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d
new file mode 100644
index 0000000..f792a3b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_18.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 8
+       new-instance v2, dot/junit/opcodes/invoke_interface/ITestImplAbstract
+       invoke-interface {v2}, dot/junit/opcodes/invoke_interface/ITestImplAbstract/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.java
new file mode 100644
index 0000000..b9f9ccc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_18.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_18 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.d
new file mode 100644
index 0000000..9c5e86d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_2.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface {v6, v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dfh
new file mode 100644
index 0000000..d1d1886
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dfh
@@ -0,0 +1,294 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 0a295956
+    56 59 29 0A 
+// parsed: offset 12, len 20: signature           : 1dee...09a5
+    1D EE 44 4E 27 44 F2 88 7C 13 FE E3 09 B1 55 80 3C 7B 09 A5 
+// parsed: offset 32, len 4: file_size           : 664
+    98 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 528 (0x000210)
+    10 02 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 11
+    0B 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 156 (0x00009c)
+    9C 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 176 (0x0000b0)
+    B0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 244 (0x0000f4)
+    F4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 388
+    84 01 00 00 
+// parsed: offset 108, len 4: data_off            : 276 (0x000114)
+    14 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 342 (0x000156) "<init>"
+    56 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 350 (0x00015e) "I"
+    5E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "IL"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 357 (0x000165) "ILL"
+    65 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 362 (0x00016a) "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+    6A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 423 (0x0001a7) "Ljava/lang/Comparable;"
+    A7 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 447 (0x0001bf) "Ljava/lang/Object;"
+    BF 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 467 (0x0001d3) "T_invoke_interface_2.java"
+    D3 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 494 (0x0001ee) "V"
+    EE 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 497 (0x0001f1) "compareTo"
+    F1 01 00 00 
+// parsed: offset 152, len 4: [10] string_data_off: 508 (0x0001fc) "run"
+    FC 01 00 00 
+
+// type_ids:
+// parsed: offset 156, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 160, len 4: [1] descriptor_idx: 4 (0x000004) "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [2] descriptor_idx: 5 (0x000005) "Ljava/lang/Comparable;"
+    05 00 00 00 
+// parsed: offset 168, len 4: [3] descriptor_idx: 6 (0x000006) "Ljava/lang/Object;"
+    06 00 00 00 
+// parsed: offset 172, len 4: [4] descriptor_idx: 8 (0x000008) "V"
+    08 00 00 00 
+
+// proto_ids:
+// parsed: offset 176, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "ILL"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    03 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 188, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "IL"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 336 (0x000150)
+    02 00 00 00 00 00 00 00 50 01 00 00 
+// parsed: offset 200, len 12: [2] 
+//     shorty_idx: 8 (0x000008) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    08 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 212, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    01 00 02 00 00 00 00 00 
+// parsed: offset 220, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 10 (0x00000a) "run"
+    01 00 00 00 0A 00 00 00 
+// parsed: offset 228, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 9 (0x000009) "compareTo"
+    02 00 01 00 09 00 00 00 
+// parsed: offset 236, len 8: [3] class_idx: 3 (0x000003)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    03 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 244, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 7 "T_invoke_interface_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 513 (0x000201)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 01 02 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_interface.d.T_invoke_interface_2.<init>"
+    // parsed: offset 276, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 278, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 280, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 282, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 284, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 288, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 292, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 298, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_interface.d.T_invoke_interface_2.run"
+    // parsed: offset 300, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 302, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 304, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 306, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 308, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 312, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 316, len 6: |0000: invoke-interface {v6, v7}, Ljava/lang/Comparable;.compareTo:(Ljava/lang/Object;)I // method@0002
+//@mod            72 20 02 00 76 00 
+            72 20 02 01 76 00 
+        // parsed: offset 322, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 324, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 2
+        02 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 3
+        03 00 
+// TYPE_LIST
+    // parsed: offset 336, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 340, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 342, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 350, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 353, len 4: TYPE_STRING_DATA_ITEM [2] "IL"
+    02 49 4C 00 
+// parsed: offset 357, len 5: TYPE_STRING_DATA_ITEM [3] "ILL"
+    03 49 4C 4C 00 
+// parsed: offset 362, len 61: TYPE_STRING_DATA_ITEM [4] "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+    3B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 32 3B 00 
+// parsed: offset 423, len 24: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Comparable;"
+    16 4C 6A 61 76 61 2F 6C 61 6E 67 2F 43 6F 6D 70 61 72 61 62 6C 65 3B 00 
+// parsed: offset 447, len 20: TYPE_STRING_DATA_ITEM [6] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 467, len 27: TYPE_STRING_DATA_ITEM [7] "T_invoke_interface_2.java"
+    19 54 5F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 494, len 3: TYPE_STRING_DATA_ITEM [8] "V"
+    01 56 00 
+// parsed: offset 497, len 11: TYPE_STRING_DATA_ITEM [9] "compareTo"
+    09 63 6F 6D 70 61 72 65 54 6F 00 
+// parsed: offset 508, len 5: TYPE_STRING_DATA_ITEM [10] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_interface/d/T_invoke_interface_2;"
+    // parsed: offset 513, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 514, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 515, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 516, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 517, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 518, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 521, len 2: code_off: 276 (0x000114)
+                94 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 523, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 524, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 525, len 2: code_off: 300 (0x00012c)
+                AC 02 
+// parsed: offset 527, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 528, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 532, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 544, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 11
+    //      offset: 112 (0x000070)
+        01 00 00 00 0B 00 00 00 70 00 00 00 
+    // parsed: offset 556, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 156 (0x00009c)
+        02 00 00 00 05 00 00 00 9C 00 00 00 
+    // parsed: offset 568, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 176 (0x0000b0)
+        03 00 00 00 03 00 00 00 B0 00 00 00 
+    // parsed: offset 580, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 212 (0x0000d4)
+        05 00 00 00 04 00 00 00 D4 00 00 00 
+    // parsed: offset 592, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 244 (0x0000f4)
+        06 00 00 00 01 00 00 00 F4 00 00 00 
+    // parsed: offset 604, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 276 (0x000114)
+        01 20 00 00 02 00 00 00 14 01 00 00 
+    // parsed: offset 616, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 328 (0x000148)
+        01 10 00 00 02 00 00 00 48 01 00 00 
+    // parsed: offset 628, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 11
+    //      offset: 342 (0x000156)
+        02 20 00 00 0B 00 00 00 56 01 00 00 
+    // parsed: offset 640, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 513 (0x000201)
+        00 20 00 00 01 00 00 00 01 02 00 00 
+    // parsed: offset 652, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 528 (0x000210)
+        00 10 00 00 01 00 00 00 10 02 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.d
new file mode 100644
index 0000000..c2465e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_20.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_20
+.super java/lang/Object
+
+.field public static i I
+
+.method static <clinit>()V
+.limit regs 2
+Label0:
+       const/4 v1, 0
+       sput v1, dot.junit.opcodes.invoke_interface.d.T_invoke_interface_20.i I
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 5
+
+       invoke-interface {v3}, dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20/<clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.java
new file mode 100644
index 0000000..f40b587
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_20.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_20 {
+
+    public static int i = 0;
+    
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.d
new file mode 100644
index 0000000..f8b0dea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_21.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 9
+
+    const-wide v4, 64
+    invoke-interface {v8, v4, v5}, dot/junit/opcodes/invoke_interface/ITest/testArgsOrder(II)I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.java
new file mode 100644
index 0000000..f777a6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_21.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_21 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.d
new file mode 100644
index 0000000..7c27ad2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_22.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_22.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_22
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       new-instance v0, dot/junit/opcodes/invoke_interface/ITestImpl
+
+       invoke-interface {v0}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.d
new file mode 100644
index 0000000..debf41a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.d
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_3.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_3
+.super java/lang/Object
+
+
+.method public <init>(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 5
+Label0:
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       invoke-interface {v4}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.java
new file mode 100644
index 0000000..8c63c18
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_3 {
+
+    public T_invoke_interface_3 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.d
new file mode 100644
index 0000000..a8de67b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_4.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-interface {v7}, dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4/test()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.java
new file mode 100644
index 0000000..4f751fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_interface.d;
+
+
+public class T_invoke_interface_4 {
+    public void test() {
+    }
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.d
new file mode 100644
index 0000000..adf7abe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.d
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_5.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_5
+.super java/lang/Object
+
+
+.method public <init>(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 2
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       
+        invoke-interface {}, dot/junit/opcodes/invoke_interface/ITest/doit()V
+       
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.java
new file mode 100644
index 0000000..7615134
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+
+public class T_invoke_interface_5 {
+
+    public T_invoke_interface_5(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.d
new file mode 100644
index 0000000..c96f200
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_7.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface/ITest;)V
+.limit regs 5
+
+       invoke-interface {v4}, dot/junit/opcodes/invoke_interface/ITest/doitN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.java
new file mode 100644
index 0000000..b249ded
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_interface.d;
+
+import dot.junit.opcodes.invoke_interface.ITest;
+
+public class T_invoke_interface_7 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.d
new file mode 100644
index 0000000..8bf956e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_8.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface {v8, v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.d
new file mode 100644
index 0000000..2fc4a90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface/d/T_invoke_interface_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_9.java
+.class public dot.junit.opcodes.invoke_interface.d.T_invoke_interface_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface {v6}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITest.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITest.java
new file mode 100644
index 0000000..404787e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITest.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range;
+
+public interface ITest {
+    public void doit();
+    public void doit(int i);
+    public void doitNative();
+    public int test(int a);
+    public int testArgsOrder(int a, int b);
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITestImpl.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITestImpl.java
new file mode 100644
index 0000000..e1d871a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITestImpl.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range;
+
+
+
+public class ITestImpl implements ITest {
+    public void doit() {
+        // impl
+    }
+
+    public void doit(int i) {
+        //
+    }
+
+    public native void doitNative();
+
+    public int test(int a) {
+        if (a == 999) return 195;
+        return 0;
+    }
+
+    public int testArgsOrder(int a, int b) {
+        return a / b;
+    }
+
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITestImplAbstract.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITestImplAbstract.java
new file mode 100644
index 0000000..aee0064
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/ITestImplAbstract.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range;
+
+
+public abstract class ITestImplAbstract implements ITest {
+    abstract public void doit();
+    abstract public void doit(int i);
+    public native void doitNative();
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/Test_invoke_interface_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/Test_invoke_interface_range.java
new file mode 100644
index 0000000..abb4855
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/Test_invoke_interface_range.java
@@ -0,0 +1,293 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_1;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_11;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_12;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_13;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_14;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_16;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_18;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_20;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_21;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_3;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_4;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_5;
+import dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_7;
+
+public class Test_invoke_interface_range extends DxTestCase {
+
+    /**
+     * @title invoke interface method
+     */
+    public void testN1() {
+        T_invoke_interface_range_1 t = new T_invoke_interface_range_1();
+        assertEquals(0, t.run("aa", "aa"));
+        assertEquals(-1, t.run("aa", "bb"));
+        assertEquals(1, t.run("bb", "aa"));
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_interface_range and
+     * arguments are passed to method
+     */
+    public void testN2() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_14
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        T_invoke_interface_range_14 t = new T_invoke_interface_range_14();
+        ITestImpl impl = new ITestImpl();
+        assertEquals(1, t.run(impl));
+    }
+
+
+
+    /**
+     * @title objref is null
+     */
+    public void testE3() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_3
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        try {
+            new T_invoke_interface_range_3(null);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title object doesn't implement interface
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_11
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        T_invoke_interface_range_11 t = new T_invoke_interface_range_11();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_12
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        T_invoke_interface_range_12 t = new T_invoke_interface_range_12();
+        ITestImpl impl = new ITestImpl();
+        try {
+            t.run(impl);
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE6() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_13
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImplAbstract
+        T_invoke_interface_range_13 t = new T_invoke_interface_range_13();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A17
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A17
+     * @title The referenced method_id must belong to an interface (not a class).
+     */
+    public void testVFE2() {
+        try {
+            new T_invoke_interface_range_4().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        try {
+            new T_invoke_interface_range_5(new ITestImpl());
+            fail("expected VerifyError");
+        } catch (VerifyError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title int is passed instead of objref
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title number of arguments passed to method
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title invoke-interface may not be used to call <init>.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImplAbstract
+        try {
+            new T_invoke_interface_range_18().run(new ITestImpl());
+            fail("expected InstantiationError");
+        } catch (InstantiationError t) {
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title invoke-interface may not be used to call <clinit>.
+     */
+    public void testVFE11() {
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        try {
+            new T_invoke_interface_range_20().run(new ITestImpl());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        try {
+            new T_invoke_interface_range_21().run(new ITestImpl());
+            fail("expected VerifyError");
+        } catch (VerifyError t) {
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_7
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        try {
+            new T_invoke_interface_range_7().run(new ITestImpl());
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_16
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        try {
+            new T_invoke_interface_range_16().run(new ITestImpl());
+            fail("expected NoSuchMethodError");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE21() {
+        //@uses dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_22
+        //@uses dot.junit.opcodes.invoke_interface_range.ITest
+        //@uses dot.junit.opcodes.invoke_interface_range.ITestImpl
+        try {
+            Class.forName("dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.d
new file mode 100644
index 0000000..70fee02
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_1.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface/range {v6..v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.java
new file mode 100644
index 0000000..fa6fd15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range.d;
+
+public class T_invoke_interface_range_1 {
+
+    public int run(Comparable c, Object o) {
+        return c.compareTo(o);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.d
new file mode 100644
index 0000000..d78f6c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_10.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+       const v6, 1243
+       invoke-interface/range {v6..v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.d
new file mode 100644
index 0000000..d0fe868
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_11.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       invoke-interface/range {v4}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.java
new file mode 100644
index 0000000..d990613
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range.d;
+
+
+public class T_invoke_interface_range_11 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.d
new file mode 100644
index 0000000..7463912
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_12.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 5
+
+       invoke-interface/range {v4}, dot/junit/opcodes/invoke_interface_range/ITest/doitNative()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.java
new file mode 100644
index 0000000..b5a2167
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_12.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_12 {
+
+    public void run(ITest test) {
+        test.doitNative();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.d
new file mode 100644
index 0000000..4b0ea65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_13.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_13
+.super dot/junit/opcodes/invoke_interface_range/ITestImplAbstract
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_interface_range/ITestImplAbstract/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 7
+
+       invoke-interface/range {v6}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.java
new file mode 100644
index 0000000..1d9989b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range.d;
+
+
+public class T_invoke_interface_range_13 {
+
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.d
new file mode 100644
index 0000000..ce6cd80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.d
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_14.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)I
+.limit regs 9
+    const v1, 123
+    const v2, 345
+
+    const v4, 64
+    const v5, 2
+    move-object v3, v8
+    invoke-interface/range {v3..v5}, dot/junit/opcodes/invoke_interface_range/ITest/testArgsOrder(II)I
+    move-result v4
+    const v5, 32
+    if-ne v4, v5, Label0
+
+    const v5, 123
+    if-ne v5, v1, Label0
+
+    const v5, 345
+    if-ne v5, v2, Label0
+
+
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.java
new file mode 100644
index 0000000..ac996f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_14.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_14 {
+
+    public int run(ITest test) {
+        int a = 123;
+        int b = 345;
+        if(test.testArgsOrder(64, 2) == 32)
+        {
+            if(a == 123)
+                if(b == 345)
+                    return 1;
+        }
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.d
new file mode 100644
index 0000000..2cfcc5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_16.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 6
+
+       const/high16 v3, 1065353216
+       move-object v2, v5
+       invoke-interface/range {v2..v3}, dot/junit/opcodes/invoke_interface_range/ITest/doit(F)V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.java
new file mode 100644
index 0000000..ada5988
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_16.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_16 {
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d
new file mode 100644
index 0000000..0174a71
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_18.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 8
+       new-instance v2, dot/junit/opcodes/invoke_interface_range/ITestImplAbstract
+       invoke-interface/range {v2}, dot/junit/opcodes/invoke_interface_range/ITestImplAbstract/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.java
new file mode 100644
index 0000000..5c93b22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_18.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_18 {
+
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.d
new file mode 100644
index 0000000..cd8bc3e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_2.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface/range {v6..v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dfh
new file mode 100644
index 0000000..9bc316f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dfh
@@ -0,0 +1,294 @@
+// Processing 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dex'...
+// Opened 'tools/cts/dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : f75b5e58
+    58 5E 5B F7 
+// parsed: offset 12, len 20: signature           : 8d58...fcad
+    8D 58 41 7D D6 50 6A 07 7B 67 E0 45 7B 76 2A 94 0C A4 FC AD 
+// parsed: offset 32, len 4: file_size           : 684
+    AC 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 548 (0x000224)
+    24 02 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 11
+    0B 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 156 (0x00009c)
+    9C 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 176 (0x0000b0)
+    B0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 244 (0x0000f4)
+    F4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 408
+    98 01 00 00 
+// parsed: offset 108, len 4: data_off            : 276 (0x000114)
+    14 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 342 (0x000156) "<init>"
+    56 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 350 (0x00015e) "I"
+    5E 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "IL"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 357 (0x000165) "ILL"
+    65 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 362 (0x00016a) "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+    6A 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 435 (0x0001b3) "Ljava/lang/Comparable;"
+    B3 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 459 (0x0001cb) "Ljava/lang/Object;"
+    CB 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 479 (0x0001df) "T_invoke_interface_range_2.java"
+    DF 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 512 (0x000200) "V"
+    00 02 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 515 (0x000203) "compareTo"
+    03 02 00 00 
+// parsed: offset 152, len 4: [10] string_data_off: 526 (0x00020e) "run"
+    0E 02 00 00 
+
+// type_ids:
+// parsed: offset 156, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 160, len 4: [1] descriptor_idx: 4 (0x000004) "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [2] descriptor_idx: 5 (0x000005) "Ljava/lang/Comparable;"
+    05 00 00 00 
+// parsed: offset 168, len 4: [3] descriptor_idx: 6 (0x000006) "Ljava/lang/Object;"
+    06 00 00 00 
+// parsed: offset 172, len 4: [4] descriptor_idx: 8 (0x000008) "V"
+    08 00 00 00 
+
+// proto_ids:
+// parsed: offset 176, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "ILL"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    03 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 188, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "IL"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 336 (0x000150)
+    02 00 00 00 00 00 00 00 50 01 00 00 
+// parsed: offset 200, len 12: [2] 
+//     shorty_idx: 8 (0x000008) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    08 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 212, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    01 00 02 00 00 00 00 00 
+// parsed: offset 220, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 10 (0x00000a) "run"
+    01 00 00 00 0A 00 00 00 
+// parsed: offset 228, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 9 (0x000009) "compareTo"
+    02 00 01 00 09 00 00 00 
+// parsed: offset 236, len 8: [3] class_idx: 3 (0x000003)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    03 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 244, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 7 "T_invoke_interface_range_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 531 (0x000213)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 13 02 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_2.<init>"
+    // parsed: offset 276, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 278, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 280, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 282, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 284, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 288, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 292, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 298, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_2.run"
+    // parsed: offset 300, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 302, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 304, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 306, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 308, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 312, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 316, len 6: |0000: invoke-interface/range {v6..v7}, Ljava/lang/Comparable;.compareTo:(Ljava/lang/Object;)I // method@0002
+//@mod            78 02 02 00 06 00 
+            78 02 02 01 06 00 
+        // parsed: offset 322, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 324, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 2
+        02 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 3
+        03 00 
+// TYPE_LIST
+    // parsed: offset 336, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 340, len 2: type_item [0] type_idx: 3
+        03 00 
+// parsed: offset 342, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 350, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 353, len 4: TYPE_STRING_DATA_ITEM [2] "IL"
+    02 49 4C 00 
+// parsed: offset 357, len 5: TYPE_STRING_DATA_ITEM [3] "ILL"
+    03 49 4C 4C 00 
+// parsed: offset 362, len 73: TYPE_STRING_DATA_ITEM [4] "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+    47 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 72 61 6E 67 65 5F 32 3B 00 
+// parsed: offset 435, len 24: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Comparable;"
+    16 4C 6A 61 76 61 2F 6C 61 6E 67 2F 43 6F 6D 70 61 72 61 62 6C 65 3B 00 
+// parsed: offset 459, len 20: TYPE_STRING_DATA_ITEM [6] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 479, len 33: TYPE_STRING_DATA_ITEM [7] "T_invoke_interface_range_2.java"
+    1F 54 5F 69 6E 76 6F 6B 65 5F 69 6E 74 65 72 66 61 63 65 5F 72 61 6E 67 65 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 512, len 3: TYPE_STRING_DATA_ITEM [8] "V"
+    01 56 00 
+// parsed: offset 515, len 11: TYPE_STRING_DATA_ITEM [9] "compareTo"
+    09 63 6F 6D 70 61 72 65 54 6F 00 
+// parsed: offset 526, len 5: TYPE_STRING_DATA_ITEM [10] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_2;"
+    // parsed: offset 531, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 532, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 533, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 534, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 535, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 536, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 539, len 2: code_off: 276 (0x000114)
+                94 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 541, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 542, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 543, len 2: code_off: 300 (0x00012c)
+                AC 02 
+// parsed: offset 545, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 548, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 552, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 564, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 11
+    //      offset: 112 (0x000070)
+        01 00 00 00 0B 00 00 00 70 00 00 00 
+    // parsed: offset 576, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 156 (0x00009c)
+        02 00 00 00 05 00 00 00 9C 00 00 00 
+    // parsed: offset 588, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 176 (0x0000b0)
+        03 00 00 00 03 00 00 00 B0 00 00 00 
+    // parsed: offset 600, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 212 (0x0000d4)
+        05 00 00 00 04 00 00 00 D4 00 00 00 
+    // parsed: offset 612, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 244 (0x0000f4)
+        06 00 00 00 01 00 00 00 F4 00 00 00 
+    // parsed: offset 624, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 276 (0x000114)
+        01 20 00 00 02 00 00 00 14 01 00 00 
+    // parsed: offset 636, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 328 (0x000148)
+        01 10 00 00 02 00 00 00 48 01 00 00 
+    // parsed: offset 648, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 11
+    //      offset: 342 (0x000156)
+        02 20 00 00 0B 00 00 00 56 01 00 00 
+    // parsed: offset 660, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 531 (0x000213)
+        00 20 00 00 01 00 00 00 13 02 00 00 
+    // parsed: offset 672, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 548 (0x000224)
+        00 10 00 00 01 00 00 00 24 02 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.d
new file mode 100644
index 0000000..3dd1bcd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_20.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_20
+.super java/lang/Object
+
+.field public static i I
+
+.method static <clinit>()V
+.limit regs 2
+Label0:
+       const/4 v1, 0
+       sput v1, dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_20.i I
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 5
+
+       invoke-interface/range {v3}, dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20/<clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.java
new file mode 100644
index 0000000..a28964c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_20.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_20 {
+
+    public static int i = 0;
+    
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.d
new file mode 100644
index 0000000..f8b1b95
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_21.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_21
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 9
+
+    const-wide v4, 64
+    move-object v3, v8
+    invoke-interface/range {v3..v5}, dot/junit/opcodes/invoke_interface_range/ITest/testArgsOrder(II)I
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.java
new file mode 100644
index 0000000..b26ae98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_21.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_21 {
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.d
new file mode 100644
index 0000000..3b2a521
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_22.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_22.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_22
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       new-instance v0, dot/junit/opcodes/invoke_interface_range/ITestImpl
+
+       invoke-interface/range {v0}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.d
new file mode 100644
index 0000000..ca4948d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.d
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_3.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_3
+.super java/lang/Object
+
+
+.method public <init>(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 5
+Label0:
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       invoke-interface/range {v4}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.java
new file mode 100644
index 0000000..f39dca5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_3 {
+
+    public T_invoke_interface_range_3 (ITest test) {
+        test.doit();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.d
new file mode 100644
index 0000000..8a21324
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_4.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-interface/range {v7}, dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4/test()V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.java
new file mode 100644
index 0000000..aa0b9ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range.d;
+
+
+public class T_invoke_interface_range_4 {
+    public void test() {
+    }
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.d
new file mode 100644
index 0000000..a0e0905
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.d
@@ -0,0 +1,28 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_5.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_5
+.super java/lang/Object
+
+
+.method public <init>(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 2
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       
+        invoke-interface/range {}, dot/junit/opcodes/invoke_interface_range/ITest/doit()V
+       
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.java
new file mode 100644
index 0000000..cfbcd8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_5 {
+    public T_invoke_interface_range_5(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.d
new file mode 100644
index 0000000..13a63d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_7.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_interface_range/ITest;)V
+.limit regs 5
+
+       invoke-interface/range {v4}, dot/junit/opcodes/invoke_interface_range/ITest/doitN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.java
new file mode 100644
index 0000000..82b6c7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_interface_range.d;
+
+import dot.junit.opcodes.invoke_interface_range.ITest;
+
+public class T_invoke_interface_range_7 {
+    public void run(ITest test) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.d
new file mode 100644
index 0000000..f81692c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_8.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       move-object v6, v8
+       invoke-interface/range {v6..v7}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.d
new file mode 100644
index 0000000..cd73a85
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_interface_range/d/T_invoke_interface_range_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_interface_range_9.java
+.class public dot.junit.opcodes.invoke_interface_range.d.T_invoke_interface_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Comparable;Ljava/lang/Object;)I
+.limit regs 8
+
+       invoke-interface/range {v6}, java/lang/Comparable/compareTo(Ljava/lang/Object;)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/TestClass.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/TestClass.java
new file mode 100644
index 0000000..3db9673
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/TestClass.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static;
+
+public class TestClass {
+    
+    public static int test(){
+        return 777;
+    }
+    
+    public static int test1(int i1){
+        int i = i1 + 5;
+        return i;
+    }
+    
+    public static int testArgsOrder(int i1, int i2){
+        int a = 3454;
+        int b = 2302;
+        int i = i1 / i2;
+        return i;
+    }
+    
+    protected static void testProtected() {
+        
+    }
+    
+    
+    private static void testPvt(){
+        
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/Test_invoke_static.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/Test_invoke_static.java
new file mode 100644
index 0000000..c7b77aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/Test_invoke_static.java
@@ -0,0 +1,270 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_1;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_13;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_14;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_15;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_17;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_18;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_19;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_2;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_4;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_5;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_6;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_7;
+import dot.junit.opcodes.invoke_static.d.T_invoke_static_8;
+
+
+
+public class Test_invoke_static extends DxTestCase {
+
+    /**
+     * @title Static method from library class Math
+     */
+    public void testN1() {
+        T_invoke_static_1 t = new T_invoke_static_1();
+        assertEquals(1234567, t.run());
+    }
+
+    /**
+     * @title Static method from user class
+     */
+    public void testN2() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_2
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        T_invoke_static_2 t = new T_invoke_static_2();
+        assertEquals(777, t.run());
+    }
+
+    /**
+     * @title Check that <clinit> is called
+     */
+    public void testN3() {
+        assertEquals(123456789l, T_invoke_static_4.run());
+    }
+
+
+    /**
+     * @title Check that new frame is created by invoke_static and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_15
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        T_invoke_static_15 t = new T_invoke_static_15();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Static protected method from other class in the same package
+     */
+    public void testN6() {
+        T_invoke_static_18 t = new T_invoke_static_18();
+        assertEquals(888, t.run());
+    }
+
+    /**
+     * @title Native method can't be linked
+     *
+     */
+    public void testE2() {
+        T_invoke_static_6 t = new T_invoke_static_6();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE7() {
+        T_invoke_static_14 t = new T_invoke_static_14();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A13
+     * @title  invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;clinit&gt; may not be called using invoke-static
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments passed to method.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;init&gt; may not be called using invoke_static
+     */
+    public void testVFE5() {
+        try {
+            new T_invoke_static_19().run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError t) {
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call non-static method.
+     */
+    public void testVFE7() {
+         try {
+             new T_invoke_static_5().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method.
+     */
+    public void testVFE8() {
+        try {
+            new T_invoke_static_7().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call private method of other class.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_8
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        try {
+            new T_invoke_static_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_13
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        try {
+            new T_invoke_static_13().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B12
+     * @title Attempt to call protected method of unrelated class.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.invoke_static.d.T_invoke_static_17
+        //@uses dot.junit.opcodes.invoke_static.TestClass
+        try {
+            new T_invoke_static_17().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static.d.T_invoke_static_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.d
new file mode 100644
index 0000000..04c88aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_1.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.java
new file mode 100644
index 0000000..a6b001fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_1 {
+
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.d
new file mode 100644
index 0000000..365afbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_10.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_10.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_10
+.super java/lang/Object
+
+
+
+.method static <clinit>()V
+    return-void
+.end method
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/T_invoke_static_10/<clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.d
new file mode 100644
index 0000000..227b52c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_11.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static {}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.d
new file mode 100644
index 0000000..2e78a06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_13.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+
+       invoke-static {v1}, dot/junit/opcodes/invoke_static/TestClass/test1(F)I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.java
new file mode 100644
index 0000000..a51532c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.d
new file mode 100644
index 0000000..ed2aa2b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.d
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 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.
+
+.source TestClassInitError.java
+.class public dot.junit.opcodes.invoke_static.d.TestClassInitError
+.super java/lang/Object
+
+.method static public <clinit>()V
+.limit regs 2
+
+    const v0, 1
+    const v1, 0
+    div-int v0, v0, v1
+.end method
+
+.method static public test()V
+    return-void
+.end method
+
+.source T_invoke_static_14.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/TestClassInitError/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.java
new file mode 100644
index 0000000..c4efea3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_14.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_14 {
+    
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.d
new file mode 100644
index 0000000..58bccb9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.d
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_15.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 6
+
+    const v1, 123
+    const v2, 345
+
+    const v3, 12
+    const v4, 6
+    
+    invoke-static {v3, v4}, dot/junit/opcodes/invoke_static/TestClass/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 2
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 345
+    if-ne v2, v4, Label0
+
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.java
new file mode 100644
index 0000000..0db7ec5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_15.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static.d;
+
+import dot.junit.opcodes.invoke_static.TestClass;
+
+public class T_invoke_static_15 {
+    
+    public boolean run(){
+        int i = 123;
+        int j = 345;
+        if(TestClass.testArgsOrder(12, 2) == 6)
+            if(i == 123)
+                if(j == 345)
+                    return true;
+        return false;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.d
new file mode 100644
index 0000000..883edbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_16.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_16.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static {v3}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.d
new file mode 100644
index 0000000..1ce4ed4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_17.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/TestClass/testProtected()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.java
new file mode 100644
index 0000000..194ef10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.d
new file mode 100644
index 0000000..7332bce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source TestProtected.java
+.class public dot.junit.opcodes.invoke_static.d.TestProtected
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method protected static testP()I
+.limit regs 2
+    const v0, 888
+    return v0
+.end method
+
+
+.source T_invoke_static_18.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/TestProtected/testP()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.java
new file mode 100644
index 0000000..776b488
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_18.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static.d;
+
+class TestProtected {
+    static protected int testP() {
+        return 888;
+    }
+}
+
+public class T_invoke_static_18  {
+    
+    public int run() {
+        return TestProtected.testP();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.d
new file mode 100644
index 0000000..e94e2a3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_19.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_19
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+
+       invoke-static {}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       const/4 v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.java
new file mode 100644
index 0000000..1682c92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_19 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.d
new file mode 100644
index 0000000..1c53ad3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_2.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/TestClass/test()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.java
new file mode 100644
index 0000000..2e6bfd9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static.d;
+
+import dot.junit.opcodes.invoke_static.TestClass;
+
+public class T_invoke_static_2  {
+    
+    public int run() {
+        return TestClass.test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.d
new file mode 100644
index 0000000..9ef67a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_20.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const-wide v1, 1
+       invoke-static {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.d
new file mode 100644
index 0000000..9a2871f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_24.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 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.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_static.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_static.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_static.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_static_24.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_24
+.super dot/junit/opcodes/invoke_static/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_static/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-static {v7}, dot/junit/opcodes/invoke_static/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.d
new file mode 100644
index 0000000..321761f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_3.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dfh
new file mode 100644
index 0000000..9c4f6eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dfh
@@ -0,0 +1,283 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_static/d/T_invoke_static_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 13655765
+    65 57 65 13 
+// parsed: offset 12, len 20: signature           : a1e9...1ca1
+    A1 E9 92 EC DD 74 44 53 75 44 CF F1 C4 AF EA F3 CB 80 1C A1 
+// parsed: offset 32, len 4: file_size           : 632
+    78 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 496 (0x0001f0)
+    F0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 240 (0x0000f0)
+    F0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 360
+    68 01 00 00 
+// parsed: offset 108, len 4: data_off            : 272 (0x000110)
+    10 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 404 (0x000194) "Ljava/lang/Math;"
+    94 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 422 (0x0001a6) "Ljava/lang/Object;"
+    A6 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 442 (0x0001ba) "T_invoke_static_3.java"
+    BA 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 466 (0x0001d2) "V"
+    D2 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 469 (0x0001d5) "abs"
+    D5 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 474 (0x0001da) "run"
+    DA 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Math;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Ljava/lang/Object;"
+    05 00 00 00 
+// parsed: offset 168, len 4: [4] descriptor_idx: 7 (0x000007) "V"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 172, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 184, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 196, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    07 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 208, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    01 00 02 00 00 00 00 00 
+// parsed: offset 216, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 9 (0x000009) "run"
+    01 00 00 00 09 00 00 00 
+// parsed: offset 224, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "abs"
+    02 00 01 00 08 00 00 00 
+// parsed: offset 232, len 8: [3] class_idx: 3 (0x000003)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    03 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 240, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 6 "T_invoke_static_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 479 (0x0001df)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 DF 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_static.d.T_invoke_static_3.<init>"
+    // parsed: offset 272, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 294, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_static.d.T_invoke_static_3.run"
+    // parsed: offset 296, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 298, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 300, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 302, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 304, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 308, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 312, len 6: |0000: const v1, #float nan // #0xffed2979 int
+            14 01 79 29 ED FF 
+        // parsed: offset 318, len 6: |0003: invoke-static {v1}, Ljava/lang/Math;.abs:(I)I // method@0002
+//@mod            71 10 02 00 01 00 
+        71 10 02 01 01 00
+        // parsed: offset 324, len 2: |0006: move-result v0
+            0A 00 
+        // parsed: offset 326, len 2: |0007: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 33 3B 00 
+// parsed: offset 404, len 18: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Math;"
+    10 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4D 61 74 68 3B 00 
+// parsed: offset 422, len 20: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 442, len 24: TYPE_STRING_DATA_ITEM [6] "T_invoke_static_3.java"
+    16 54 5F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 466, len 3: TYPE_STRING_DATA_ITEM [7] "V"
+    01 56 00 
+// parsed: offset 469, len 5: TYPE_STRING_DATA_ITEM [8] "abs"
+    03 61 62 73 00 
+// parsed: offset 474, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_static/d/T_invoke_static_3;"
+    // parsed: offset 479, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 480, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 481, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 482, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 483, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 484, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 487, len 2: code_off: 272 (0x000110)
+                90 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 489, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 490, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 491, len 2: code_off: 296 (0x000128)
+                A8 02 
+// parsed: offset 493, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 496, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 500, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 512, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 524, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 152 (0x000098)
+        02 00 00 00 05 00 00 00 98 00 00 00 
+    // parsed: offset 536, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 172 (0x0000ac)
+        03 00 00 00 03 00 00 00 AC 00 00 00 
+    // parsed: offset 548, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 208 (0x0000d0)
+        05 00 00 00 04 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 240 (0x0000f0)
+        06 00 00 00 01 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 272 (0x000110)
+        01 20 00 00 02 00 00 00 10 01 00 00 
+    // parsed: offset 584, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 596, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 334 (0x00014e)
+        02 20 00 00 0A 00 00 00 4E 01 00 00 
+    // parsed: offset 608, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 479 (0x0001df)
+        00 20 00 00 01 00 00 00 DF 01 00 00 
+    // parsed: offset 620, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 496 (0x0001f0)
+        00 10 00 00 01 00 00 00 F0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.d
new file mode 100644
index 0000000..4212854
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_4.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_4
+.super java/lang/Object
+
+.field static val J
+
+.method static <clinit>()V
+.limit regs 2
+
+       const-wide/32 v0, 123456789
+       sput-wide v0, dot.junit.opcodes.invoke_static.d.T_invoke_static_4.val J
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 4
+Label0:
+       sget-wide v2, dot.junit.opcodes.invoke_static.d.T_invoke_static_4.val J
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.java
new file mode 100644
index 0000000..c9e1dd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_4 {
+
+    static long val = 123456789l;
+
+    public static long run() {
+        return val;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.d
new file mode 100644
index 0000000..a3c8c91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_5.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const/4 v2, 5
+       invoke-static {v2}, dot/junit/opcodes/invoke_static/d/T_invoke_static_5/test(I)I
+       move-result v0
+       return v0
+.end method
+
+.method public test(I)I
+.limit regs 5
+
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.java
new file mode 100644
index 0000000..ace37b8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_5 {
+    public int run() {
+        return 0;
+    }
+    public int test(int i) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.d
new file mode 100644
index 0000000..969e499
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_6.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static native test()V
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/T_invoke_static_6/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.java
new file mode 100644
index 0000000..1cdffb1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_6.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_6 {
+
+    public static native void test();
+    
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.d
new file mode 100644
index 0000000..b58d3b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_7.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static test()V
+.limit regs 0
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static {}, dot/junit/opcodes/invoke_static/d/T_invoke_static_7/testN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.java
new file mode 100644
index 0000000..55a2327
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_7 {
+    public static void test() {
+    }
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.d
new file mode 100644
index 0000000..9a4d964
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_8.java
+.class public dot.junit.opcodes.invoke_static.d.T_invoke_static_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+       invoke-static {}, dot/junit/opcodes/invoke_static/TestClass/testPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.java
new file mode 100644
index 0000000..61acbc9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static/d/T_invoke_static_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_static.d;
+
+public class T_invoke_static_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/TestClass.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/TestClass.java
new file mode 100644
index 0000000..90f65a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/TestClass.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static_range;
+
+public class TestClass {
+    
+    public static int test(){
+        return 777;
+    }
+    
+    public static int test1(int i1){
+        int i = i1 + 5;
+        return i;
+    }
+    
+    public static int testArgsOrder(int i1, int i2){
+        int a = 3454;
+        int b = 2302;
+        int i = i1 / i2;
+        return i;
+    }
+    
+    protected static void testProtected() {
+        
+    }
+    
+    
+    private static void testPvt(){
+        
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/Test_invoke_static_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/Test_invoke_static_range.java
new file mode 100644
index 0000000..c62b333
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/Test_invoke_static_range.java
@@ -0,0 +1,269 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_1;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_13;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_14;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_15;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_17;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_18;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_19;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_2;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_4;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_5;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_6;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_7;
+import dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_8;
+
+
+
+public class Test_invoke_static_range extends DxTestCase {
+
+    /**
+     * @title Static method from library class Math
+     */
+    public void testN1() {
+        T_invoke_static_range_1 t = new T_invoke_static_range_1();
+        assertEquals(1234567, t.run());
+    }
+
+    /**
+     * @title Static method from user class
+     */
+    public void testN2() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_2
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        T_invoke_static_range_2 t = new T_invoke_static_range_2();
+        assertEquals(777, t.run());
+    }
+
+    /**
+     * @title Big number of registers
+     */
+    public void testN3() {
+        assertEquals(1, T_invoke_static_range_4.run());
+    }
+
+
+    /**
+     * @title Check that new frame is created by invoke_static_range and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_15
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        T_invoke_static_range_15 t = new T_invoke_static_range_15();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Static protected method from other class in the same package
+     */
+    public void testN6() {
+        T_invoke_static_range_18 t = new T_invoke_static_range_18();
+        assertEquals(888, t.run());
+    }
+
+    /**
+     * @title Native method can't be linked
+     *
+     */
+    public void testE2() {
+        T_invoke_static_range_6 t = new T_invoke_static_range_6();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE7() {
+        T_invoke_static_range_14 t = new T_invoke_static_range_14();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;clinit&gt; may not be called using invoke_static_range
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;init&gt; may not be called using invoke_static_range
+     */
+    public void testVFE5() {
+        try {
+            new T_invoke_static_range_19().run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError t) {
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call non-static method.
+     */
+    public void testVFE7() {
+         try {
+             new T_invoke_static_range_5().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call undefined method.
+     */
+    public void testVFE8() {
+        try {
+            new T_invoke_static_range_7().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call private method of other class.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_8
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        try {
+            new T_invoke_static_range_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_13
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        try {
+            new T_invoke_static_range_13().run();
+            fail("expected NoSuchMethodError");
+        } catch (NoSuchMethodError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B12
+     * @title Attempt to call protected method of unrelated class.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_17
+        //@uses dot.junit.opcodes.invoke_static_range.TestClass
+        try {
+            new T_invoke_static_range_17().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.d
new file mode 100644
index 0000000..1f8dac7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_1.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static/range {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.java
new file mode 100644
index 0000000..e95213e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_1 {
+
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.d
new file mode 100644
index 0000000..994973f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_10.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_10
+.super java/lang/Object
+
+
+
+.method static <clinit>()V
+    return-void
+.end method
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_10/<clinit>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.d
new file mode 100644
index 0000000..2b7131f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_11.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static/range {}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.d
new file mode 100644
index 0000000..dca327b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_13.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+
+       invoke-static/range {v1}, dot/junit/opcodes/invoke_static_range/TestClass/test1(F)I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.java
new file mode 100644
index 0000000..b3278c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.d
new file mode 100644
index 0000000..e4c1bd3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.d
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 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.
+
+.source TestClassInitError.java
+.class public dot.junit.opcodes.invoke_static_range.d.TestClassInitError
+.super java/lang/Object
+
+.method static public <clinit>()V
+.limit regs 2
+
+    const v0, 1
+    const v1, 0
+    div-int v0, v0, v1
+.end method
+
+.method static public test()V
+    return-void
+.end method
+
+.source T_invoke_static_range_14.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/TestClassInitError/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.java
new file mode 100644
index 0000000..b5b135b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_14.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_14 {
+    
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.d
new file mode 100644
index 0000000..c56d3c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.d
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_15.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 6
+
+    const v1, 123
+    const v2, 345
+
+    const v3, 12
+    const v4, 6
+    
+    invoke-static/range {v3..v4}, dot/junit/opcodes/invoke_static_range/TestClass/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 2
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 345
+    if-ne v2, v4, Label0
+
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.java
new file mode 100644
index 0000000..696de4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_15.java
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static_range.d;
+
+import dot.junit.opcodes.invoke_static_range.TestClass;
+
+public class T_invoke_static_range_15 {
+    
+    public boolean run(){
+        int i = 123;
+        int j = 345;
+        if(TestClass.testArgsOrder(12, 2) == 6)
+            if(i == 123)
+                if(j == 345)
+                    return true;
+        return false;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.d
new file mode 100644
index 0000000..c66089b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_16.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_16.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static/range {v3}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.d
new file mode 100644
index 0000000..b2ce948
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_17.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_17
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/TestClass/testProtected()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.java
new file mode 100644
index 0000000..4b020b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.d
new file mode 100644
index 0000000..19fec09
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source TestProtected.java
+.class public dot.junit.opcodes.invoke_static_range.d.TestProtected
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method protected static testP()I
+.limit regs 2
+    const v0, 888
+    return v0
+.end method
+
+
+.source T_invoke_static_range_18.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/TestProtected/testP()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.java
new file mode 100644
index 0000000..34d0098
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_18.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static_range.d;
+
+class TestProtected {
+    static protected int testP() {
+        return 888;
+    }
+}
+
+public class T_invoke_static_range_18  {
+    
+    public int run() {
+        return TestProtected.testP();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.d
new file mode 100644
index 0000000..051df3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_19.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_19
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+
+       invoke-static/range {}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+       const/4 v0, 0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.java
new file mode 100644
index 0000000..204e39a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_19 {
+    
+    public int run() {
+        return Math.abs(-1234567);
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.d
new file mode 100644
index 0000000..67e9a13
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_2.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/TestClass/test()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.java
new file mode 100644
index 0000000..eb5f3c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static_range.d;
+
+import dot.junit.opcodes.invoke_static_range.TestClass;
+
+public class T_invoke_static_range_2  {
+    
+    public int run() {
+        return TestClass.test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.d
new file mode 100644
index 0000000..5819881
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_20.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const-wide v1, 1
+       invoke-static/range {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.d
new file mode 100644
index 0000000..6ee8671
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_24.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 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.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_static_range.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_static_range.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_static_range.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_static_range_24.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_24
+.super dot/junit/opcodes/invoke_static_range/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_static_range/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-static/range {v7}, dot/junit/opcodes/invoke_static_range/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.d
new file mode 100644
index 0000000..b3734a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_3.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -1234567
+       invoke-static/range {v1}, java/lang/Math/abs(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dfh
new file mode 100644
index 0000000..624ef70b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dfh
@@ -0,0 +1,283 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4c3e5bf7
+    F7 5B 3E 4C 
+// parsed: offset 12, len 20: signature           : be81...32a4
+    BE 81 F4 E7 AE A6 FA EE 02 66 A3 DF 71 03 38 38 F6 56 32 A4 
+// parsed: offset 32, len 4: file_size           : 648
+    88 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 512 (0x000200)
+    00 02 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 240 (0x0000f0)
+    F0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 376
+    78 01 00 00 
+// parsed: offset 108, len 4: data_off            : 272 (0x000110)
+    10 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Math;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 434 (0x0001b2) "Ljava/lang/Object;"
+    B2 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 454 (0x0001c6) "T_invoke_static_range_3.java"
+    C6 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 484 (0x0001e4) "V"
+    E4 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 487 (0x0001e7) "abs"
+    E7 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 492 (0x0001ec) "run"
+    EC 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Math;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Ljava/lang/Object;"
+    05 00 00 00 
+// parsed: offset 168, len 4: [4] descriptor_idx: 7 (0x000007) "V"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 172, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 184, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 196, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "V"
+//     return_type_idx: 4 (0x000004) "V"
+//     parameters_off: 0 (0x000000)
+    07 00 00 00 04 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 208, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    01 00 02 00 00 00 00 00 
+// parsed: offset 216, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 9 (0x000009) "run"
+    01 00 00 00 09 00 00 00 
+// parsed: offset 224, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "abs"
+    02 00 01 00 08 00 00 00 
+// parsed: offset 232, len 8: [3] class_idx: 3 (0x000003)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    03 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 240, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 3 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 6 "T_invoke_static_range_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 497 (0x0001f1)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 03 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 F1 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_3.<init>"
+    // parsed: offset 272, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 288, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0003
+            70 10 03 00 01 00 
+        // parsed: offset 294, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_3.run"
+    // parsed: offset 296, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 298, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 300, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 302, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 304, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 308, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 312, len 6: |0000: const v1, #float nan // #0xffed2979 int
+            14 01 79 29 ED FF 
+        // parsed: offset 318, len 6: |0003: invoke-static/range {v1..v1}, Ljava/lang/Math;.abs:(I)I // method@0002
+//@mod            77 01 02 00 01 00 
+            77 01 02 01 01 00 
+        // parsed: offset 324, len 2: |0006: move-result v0
+            0A 00 
+        // parsed: offset 326, len 2: |0007: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 67: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+    41 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 72 61 6E 67 65 5F 33 3B 00 
+// parsed: offset 416, len 18: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Math;"
+    10 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4D 61 74 68 3B 00 
+// parsed: offset 434, len 20: TYPE_STRING_DATA_ITEM [5] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 454, len 30: TYPE_STRING_DATA_ITEM [6] "T_invoke_static_range_3.java"
+    1C 54 5F 69 6E 76 6F 6B 65 5F 73 74 61 74 69 63 5F 72 61 6E 67 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 484, len 3: TYPE_STRING_DATA_ITEM [7] "V"
+    01 56 00 
+// parsed: offset 487, len 5: TYPE_STRING_DATA_ITEM [8] "abs"
+    03 61 62 73 00 
+// parsed: offset 492, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_3;"
+    // parsed: offset 497, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 498, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 499, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 500, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 501, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 502, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 505, len 2: code_off: 272 (0x000110)
+                90 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 507, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 508, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 509, len 2: code_off: 296 (0x000128)
+                A8 02 
+// parsed: offset 511, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 512, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 516, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 528, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 540, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 152 (0x000098)
+        02 00 00 00 05 00 00 00 98 00 00 00 
+    // parsed: offset 552, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 172 (0x0000ac)
+        03 00 00 00 03 00 00 00 AC 00 00 00 
+    // parsed: offset 564, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 208 (0x0000d0)
+        05 00 00 00 04 00 00 00 D0 00 00 00 
+    // parsed: offset 576, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 240 (0x0000f0)
+        06 00 00 00 01 00 00 00 F0 00 00 00 
+    // parsed: offset 588, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 272 (0x000110)
+        01 20 00 00 02 00 00 00 10 01 00 00 
+    // parsed: offset 600, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 612, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 334 (0x00014e)
+        02 20 00 00 0A 00 00 00 4E 01 00 00 
+    // parsed: offset 624, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 497 (0x0001f1)
+        00 20 00 00 01 00 00 00 F1 01 00 00 
+    // parsed: offset 636, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 512 (0x000200)
+        00 10 00 00 01 00 00 00 00 02 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.d
new file mode 100644
index 0000000..c07542cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.d
@@ -0,0 +1,75 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_4.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private static test(IIIIIIIIII)I
+.limit regs 11
+    const v0, 10
+    if-ne v0, v10, Label0
+    const v0, 9
+    if-ne v0, v9, Label0
+    const v0, 8
+    if-ne v0, v8, Label0
+    const v0, 7
+    if-ne v0, v7, Label0
+    const v0, 6
+    if-ne v0, v6, Label0
+    const v0, 5
+    if-ne v0, v5, Label0
+    const v0, 4
+    if-ne v0, v4, Label0
+    const v0, 3
+    if-ne v0, v3, Label0
+    const v0, 2
+    if-ne v0, v2, Label0
+    const v0, 1
+    if-ne v0, v1, Label0
+
+    const v0, 1
+    return v0
+Label0:
+    const v0, 0
+    return v0
+
+.end method
+
+.method public static run()I
+.limit regs 16
+         const v1, 1
+          const v2, 2
+          const v3, 3
+          const v4, 4
+          const v5, 5
+          const v6, 6
+          const v7, 7
+          const v8, 8
+          const v9, 9
+          const v10, 10
+
+       invoke-static/range {v1..v10}, dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_4/test(IIIIIIIIII)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.java
new file mode 100644
index 0000000..9f91e190
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_4 {
+
+
+    public static int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.d
new file mode 100644
index 0000000..14cbfd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_5.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const/4 v2, 5
+       invoke-static/range {v2}, dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5/test(I)I
+       move-result v0
+       return v0
+.end method
+
+.method public test(I)I
+.limit regs 5
+
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.java
new file mode 100644
index 0000000..3e1f9cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_5 {
+    public int run() {
+        return 0;
+    }
+    public int test(int i) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.d
new file mode 100644
index 0000000..a739336
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_6.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static native test()V
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.java
new file mode 100644
index 0000000..ab00d04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_6.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_6 {
+
+    public static native void test();
+    
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.d
new file mode 100644
index 0000000..a7615ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_7.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static test()V
+.limit regs 0
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7/testN()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.java
new file mode 100644
index 0000000..5e81cca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_7 {
+    public static void test() {
+    }
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.d
new file mode 100644
index 0000000..a494912
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_static_range_8.java
+.class public dot.junit.opcodes.invoke_static_range.d.T_invoke_static_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+       invoke-static/range {}, dot/junit/opcodes/invoke_static_range/TestClass/testPvt()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.java
new file mode 100644
index 0000000..ac8e6c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_static_range/d/T_invoke_static_range_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_static_range.d;
+
+public class T_invoke_static_range_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/ATest.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/ATest.java
new file mode 100644
index 0000000..af69eaf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/TestStubs.java
new file mode 100644
index 0000000..28fc156
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/TestStubs.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/Test_invoke_super.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/Test_invoke_super.java
new file mode 100644
index 0000000..6efac8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/Test_invoke_super.java
@@ -0,0 +1,349 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_1;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_10;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_14;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_15;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_17;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_18;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_19;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_2;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_20;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_4;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_5;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_6;
+import dot.junit.opcodes.invoke_super.d.T_invoke_super_7;
+
+public class Test_invoke_super extends DxTestCase {
+
+    /**
+     * @title invoke method of superclass
+     */
+    public void testN1() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_1
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_1 t = new T_invoke_super_1();
+        assertEquals(5, t.run());
+    }
+
+
+    /**
+     * @title Invoke protected method of superclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_7
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_7 t = new T_invoke_super_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_super and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_14
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_14 t = new T_invoke_super_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Recursion of method lookup procedure
+     */
+    public void testN6() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_17
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper2
+        T_invoke_super_17 t = new T_invoke_super_17();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title obj ref is null
+     */
+    public void testE1() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_1
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_2 t = new T_invoke_super_2();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE2() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_4
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        T_invoke_super_4 t = new T_invoke_super_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_6
+        //@uses dot.junit.opcodes.invoke_super.ATest
+        T_invoke_super_6 t = new T_invoke_super_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;clinit&gt; may not be called using invoke-super
+     */
+    public void testVFE3() {
+        try {
+            new T_invoke_super_10().run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method.
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_12
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;init&gt; may not be called using invoke_super
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_22
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super.d.TPlain
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_23
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper2
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call static method.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_5
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+         try {
+             new T_invoke_super_5().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke non-existing method.
+     */
+    public void testVFE12() {
+         try {
+             new T_invoke_super_15().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of other class.
+     */
+    public void testVFE13() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_18
+        //@uses dot.junit.opcodes.invoke_super.TestStubs
+         try {
+             new T_invoke_super_18().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to invoke protected method of unrelated class.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_20
+        //@uses dot.junit.opcodes.invoke_super.TestStubs
+         try {
+             new T_invoke_super_20().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_19
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+         try {
+             new T_invoke_super_19().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title invoke-super shall be used to invoke private methods
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_13
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_13");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.invoke_super.d.T_invoke_super_25
+        //@uses dot.junit.opcodes.invoke_super.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super.d.T_invoke_super_25");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TPlain.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TPlain.d
new file mode 100644
index 0000000..5eaf417
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TPlain.d
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 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.
+
+.source TPlain.java
+.class public dot.junit.opcodes.invoke_super.d.TPlain
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.d
new file mode 100644
index 0000000..c7993b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 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.
+
+.source TSuper.java
+.class public dot.junit.opcodes.invoke_super.d.TSuper
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+    
+.method public toInt(F)I 
+.limit regs 3
+    int-to-float v0, v2
+    return v0
+.end method
+
+.method public native toIntNative()I    
+.end method
+    
+.method public static toIntStatic()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+  
+.method protected toIntP()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+
+.method private toIntPvt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+    
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 349
+    const v1, 344656
+    div-int v2, v2, v3
+    return v2
+.end method   
+
+.method public testString(Ljava/lang/String;)V
+.limit regs 2
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.java
new file mode 100644
index 0000000..7767485
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_super.d;
+
+public class TSuper {
+
+    public int toInt() {
+        return 0;
+    }
+
+    public int toInt(float f) {
+        return 0;
+    }
+
+    public native int toIntNative();
+
+    public static int toIntStatic() {
+        return 0;
+    }
+
+    protected int toIntP() {
+        return 0;
+    }
+
+    private int toIntPvt() {
+        return 0;
+    }
+
+    public int testArgsOrder(int arg1, int arg2) {
+        return 0;
+    }
+
+    public void testString(String s) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper2.d
new file mode 100644
index 0000000..b74842f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/TSuper2.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 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.
+
+.source TSuper2.java
+.class public dot.junit.opcodes.invoke_super.d.TSuper2
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public test()I 
+.limit regs 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.d
new file mode 100644
index 0000000..829c67f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_1.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_1
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 8
+
+       invoke-super {v7}, dot/junit/opcodes/invoke_super/d/T_invoke_super_1/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.java
new file mode 100644
index 0000000..2c1f61d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_1{
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.d
new file mode 100644
index 0000000..bc38f2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_10.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_10
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+    invoke-super {v0}, dot.junit.opcodes.invoke_super.d.T_invoke_super_10/<clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.java
new file mode 100644
index 0000000..76fff9d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.d
new file mode 100644
index 0000000..97683ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_11.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super {v6}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.d
new file mode 100644
index 0000000..0b6efa2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_12.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_12
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 8
+
+       invoke-super {v5, v5}, dot.junit.opcodes.invoke_super.d.T_invoke_super_12/testString(Ljava/lang/String;)V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.d
new file mode 100644
index 0000000..a030b72
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_13.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_13.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_13
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method private toIntPvt()I
+.limit regs 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_13/toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.d
new file mode 100644
index 0000000..b70f691
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.d
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_14.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_14
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v3, 300
+    const v4, 3
+
+    invoke-super {v6, v3, v4}, dot/junit/opcodes/invoke_super/d/T_invoke_super_14/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 100
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 659
+    if-ne v2, v4, Label0
+    
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 0
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.java
new file mode 100644
index 0000000..7dfcf14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super.d;
+
+    
+public class T_invoke_super_14{
+
+    public boolean run() {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.d
new file mode 100644
index 0000000..32c2700
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_15.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_15/testN()V
+       return-void
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.java
new file mode 100644
index 0000000..f3e30f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.d
new file mode 100644
index 0000000..92f6c2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_16.d
@@ -0,0 +1,26 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_16.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       invoke-super {v2}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.d
new file mode 100644
index 0000000..de24bf3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_17.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_17
+.super dot/junit/opcodes/invoke_super/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_17/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.java
new file mode 100644
index 0000000..cb68374
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super.d;
+
+    
+public class T_invoke_super_17 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.d
new file mode 100644
index 0000000..e3d61e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_18.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super/TestStubs;)V
+.limit regs 5
+
+       invoke-super {v4}, dot/junit/opcodes/invoke_super/TestStubs/TestStub()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.java
new file mode 100644
index 0000000..9c256a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_18.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_super.d;
+
+import dot.junit.opcodes.invoke_super.TestStubs;
+
+public class T_invoke_super_18 {
+    public void run(TestStubs stubs) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.d
new file mode 100644
index 0000000..847e743
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_19.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_19
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const/4 v2, 1
+       invoke-super {v3, v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_19/toInt(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.java
new file mode 100644
index 0000000..15256e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_19.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_19 extends TSuper {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.d
new file mode 100644
index 0000000..0144130
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_2.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_2
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 8
+       const v7, 0    
+       invoke-super {v7}, dot/junit/opcodes/invoke_super/d/T_invoke_super_2/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.java
new file mode 100644
index 0000000..474115a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_2{
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.d
new file mode 100644
index 0000000..eb429ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_20.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super/TestStubs;)V
+.limit regs 5
+
+       invoke-super {v4}, dot/junit/opcodes/invoke_super/TestStubs/TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.java
new file mode 100644
index 0000000..2ae592e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_20.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_super.d;
+
+import dot.junit.opcodes.invoke_super.TestStubs;
+
+public class T_invoke_super_20 {
+    public void run(TestStubs stubs) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.d
new file mode 100644
index 0000000..fbeb8e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_22.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_22.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_22
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_super/d/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_super/d/TPlain/<init>()V
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/TSuper/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.d
new file mode 100644
index 0000000..f1d2a6f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_23.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_23.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_23
+.super dot/junit/opcodes/invoke_super/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_super/d/TSuper
+       invoke-direct {v2}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/TSuper2/test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.d
new file mode 100644
index 0000000..55303d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_24.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 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.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_super.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_super.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_super.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_super_24.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_24
+.super dot/junit/opcodes/invoke_super/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-super {v7}, dot/junit/opcodes/invoke_super/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.d
new file mode 100644
index 0000000..f6e763c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_25.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_25.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_25
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 4
+
+       new-instance v3, dot/junit/opcodes/invoke_super/d/T_invoke_super_25
+       invoke-super {v3}, dot/junit/opcodes/invoke_super/d/T_invoke_super_25/toInt()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.d
new file mode 100644
index 0000000..3f80ff8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_4.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_4
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_4/toIntNative()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.java
new file mode 100644
index 0000000..316909f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.d
new file mode 100644
index 0000000..af16744
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_5.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_5
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/TSuper/toIntStatic()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.java
new file mode 100644
index 0000000..c633829
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_5.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_super.d;
+
+public class T_invoke_super_5 extends TSuper {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.d
new file mode 100644
index 0000000..94361b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_6.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_6
+.super dot/junit/opcodes/invoke_super/ATest
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/ATest/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/ATest/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.java
new file mode 100644
index 0000000..47cf76f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_6.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super.d;
+
+import dot.junit.opcodes.invoke_super.ATest;
+
+public class T_invoke_super_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.d
new file mode 100644
index 0000000..a62a1e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_7.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_7
+.super dot/junit/opcodes/invoke_super/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super {v2}, dot/junit/opcodes/invoke_super/d/T_invoke_super_7/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.java
new file mode 100644
index 0000000..2f45567
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super.d;
+
+    
+public class T_invoke_super_7 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.d
new file mode 100644
index 0000000..48e9bdd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_8.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dfh
new file mode 100644
index 0000000..8501c68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_super/d/T_invoke_super_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e6b95367
+    67 53 B9 E6 
+// parsed: offset 12, len 20: signature           : 1f59...4982
+    1F 59 10 CB D9 05 57 DD FD 89 AE 82 F3 40 87 4D 92 7E 49 82 
+// parsed: offset 32, len 4: file_size           : 592
+    50 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 468 (0x0001d4)
+    D4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 344
+    58 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 308 (0x000134) "<init>"
+    34 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 316 (0x00013c) "I"
+    3C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 319 (0x00013f) "Ldot/junit/opcodes/invoke_super/d/TSuper;"
+    3F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 362 (0x00016a) "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+    6A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 415 (0x00019f) "T_invoke_super_8.java"
+    9F 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 438 (0x0001b6) "V"
+    B6 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 441 (0x0001b9) "run"
+    B9 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 446 (0x0001be) "toInt"
+    BE 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/invoke_super/d/TSuper;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "toInt"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+// parsed: offset 208, len 8: [3] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    02 00 00 00 06 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 2 "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ldot/junit/opcodes/invoke_super/d/TSuper;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_invoke_super_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 453 (0x0001c5)
+//     static_values_off: 0 (0x000000)
+    02 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 C5 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_super.d.T_invoke_super_8.<init>"
+    // parsed: offset 248, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 264, len 2: |0000: move-object v0, v2
+            07 20 
+        // parsed: offset 266, len 2: |0001: move-object v1, v0
+            07 01 
+        // parsed: offset 268, len 6: |0002: invoke-direct {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;.<init>:()V // method@0000
+            70 10 00 00 01 00 
+        // parsed: offset 274, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_super.d.T_invoke_super_8.run"
+    // parsed: offset 276, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 278, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 280, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 282, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 284, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 288, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 292, len 2: |0000: move-object v0, v2
+            07 20 
+        // parsed: offset 294, len 2: |0001: const/4 v1, #int 0 // #0x0
+            12 01 
+        // parsed: offset 296, len 6: |0002: invoke-super {v1}, Ldot/junit/opcodes/invoke_super/d/TSuper;.toInt:()I // method@0001
+//@mod            6F 10 01 00 01 00 
+            6F 10 01 01 01 00 
+        // parsed: offset 302, len 2: |0005: move-result v1
+            0A 01 
+        // parsed: offset 304, len 2: |0006: move v0, v1
+            01 10 
+        // parsed: offset 306, len 2: |0007: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 308, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 316, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 319, len 43: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/invoke_super/d/TSuper;"
+    29 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 2F 64 2F 54 53 75 70 65 72 3B 00 
+// parsed: offset 362, len 53: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 38 3B 00 
+// parsed: offset 415, len 23: TYPE_STRING_DATA_ITEM [4] "T_invoke_super_8.java"
+    15 54 5F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 438, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 441, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 446, len 7: TYPE_STRING_DATA_ITEM [7] "toInt"
+    05 74 6F 49 6E 74 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_super/d/T_invoke_super_8;"
+    // parsed: offset 453, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 454, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 455, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 456, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 457, len 1: method_idx_diff: 2 (method_idx: 2 "<init>")
+                02 
+            // parsed: offset 458, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 461, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 463, len 1: method_idx_diff: 3 (method_idx: 3 "run")
+                03 
+            // parsed: offset 464, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 465, len 2: code_off: 276 (0x000114)
+                94 02 
+// parsed: offset 467, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 468, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 472, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 484, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 496, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 508, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 520, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 04 00 00 00 B8 00 00 00 
+    // parsed: offset 532, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 544, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 556, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 308 (0x000134)
+        02 20 00 00 08 00 00 00 34 01 00 00 
+    // parsed: offset 568, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 453 (0x0001c5)
+        00 20 00 00 01 00 00 00 C5 01 00 00 
+    // parsed: offset 580, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 10 00 00 01 00 00 00 D4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.d
new file mode 100644
index 0000000..79626b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super/d/T_invoke_super_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_9.java
+.class public dot.junit.opcodes.invoke_super.d.T_invoke_super_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super {v8, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/ATest.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/ATest.java
new file mode 100644
index 0000000..20e9c5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super_range;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/TestStubs.java
new file mode 100644
index 0000000..22b5046
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/TestStubs.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super_range;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/Test_invoke_super_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/Test_invoke_super_range.java
new file mode 100644
index 0000000..d65b8d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/Test_invoke_super_range.java
@@ -0,0 +1,350 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_1;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_10;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_14;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_15;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_17;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_18;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_19;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_2;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_20;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_4;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_5;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_6;
+import dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_7;
+
+public class Test_invoke_super_range extends DxTestCase {
+
+    /**
+     * @title invoke method of superclass
+     */
+    public void testN1() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_1
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_1 t = new T_invoke_super_range_1();
+        assertEquals(5, t.run());
+    }
+
+
+    /**
+     * @title Invoke protected method of superclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_7
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_7 t = new T_invoke_super_range_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_super_range and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_14
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_14 t = new T_invoke_super_range_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Recursion of method lookup procedure
+     */
+    public void testN6() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_17
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper2
+        T_invoke_super_range_17 t = new T_invoke_super_range_17();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title obj ref is null
+     */
+    public void testE1() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_1
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_2 t = new T_invoke_super_range_2();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE2() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_4
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        T_invoke_super_range_4 t = new T_invoke_super_range_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_6
+        //@uses dot.junit.opcodes.invoke_super_range.ATest
+        T_invoke_super_range_6 t = new T_invoke_super_range_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;clinit&gt; may not be called using invoke-super
+     */
+    public void testVFE3() {
+        try {
+            new T_invoke_super_range_10().run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method.
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_12
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;init&gt; may not be called using invoke_super_range
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_22
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super_range.d.TPlain
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_23
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper2
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call static method.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_5
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+         try {
+             new T_invoke_super_range_5().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke non-existing method.
+     */
+    public void testVFE12() {
+         try {
+             new T_invoke_super_range_15().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of other class.
+     */
+    public void testVFE13() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_18
+        //@uses dot.junit.opcodes.invoke_super_range.TestStubs
+         try {
+             new T_invoke_super_range_18().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to invoke protected method of unrelated class.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_20
+        //@uses dot.junit.opcodes.invoke_super_range.TestStubs
+         try {
+             new T_invoke_super_range_20().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_19
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+         try {
+             new T_invoke_super_range_19().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title invoke-super/range shall be used to invoke private methods
+     */
+    public void testVFE16() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_13
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_13");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_25
+        //@uses dot.junit.opcodes.invoke_super_range.d.TSuper
+         try {
+             Class.forName("dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_25");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TPlain.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TPlain.d
new file mode 100644
index 0000000..ba9512e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TPlain.d
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 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.
+
+.source TPlain.java
+.class public dot.junit.opcodes.invoke_super_range.d.TPlain
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.d
new file mode 100644
index 0000000..e9d0ff1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 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.
+
+.source TSuper.java
+.class public dot.junit.opcodes.invoke_super_range.d.TSuper
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+    
+.method public toInt(F)I 
+.limit regs 3
+    int-to-float v0, v2
+    return v0
+.end method
+
+.method public native toIntNative()I    
+.end method
+    
+.method public static toIntStatic()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+  
+.method protected toIntP()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+
+.method private toIntPvt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+    
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 349
+    const v1, 344656
+    div-int v2, v2, v3
+    return v2
+.end method   
+
+.method public testString(Ljava/lang/String;)V
+.limit regs 2
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.java
new file mode 100644
index 0000000..004b573
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_super_range.d;
+
+public class TSuper {
+
+    public int toInt() {
+        return 0;
+    }
+
+    public int toInt(float f) {
+        return 0;
+    }
+
+    public native int toIntNative();
+
+    public static int toIntStatic() {
+        return 0;
+    }
+
+    protected int toIntP() {
+        return 0;
+    }
+
+    private int toIntPvt() {
+        return 0;
+    }
+
+    public int testArgsOrder(int arg1, int arg2) {
+        return 0;
+    }
+
+    public void testString(String s) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.d
new file mode 100644
index 0000000..90baf5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/TSuper2.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 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.
+
+.source TSuper2.java
+.class public dot.junit.opcodes.invoke_super_range.d.TSuper2
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public test()I 
+.limit regs 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.d
new file mode 100644
index 0000000..4181eed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_1.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_1
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 8
+
+       invoke-super/range {v7}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.java
new file mode 100644
index 0000000..0844d80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_1{
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.d
new file mode 100644
index 0000000..baca689
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_10.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_10
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+    invoke-super/range {v0}, dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_10/<clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.java
new file mode 100644
index 0000000..3ff5490
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.d
new file mode 100644
index 0000000..7cc537c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_11.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super/range {v6}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.d
new file mode 100644
index 0000000..38cd7d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_12.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_12
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 8
+       move-object v4, v5
+       invoke-super/range {v4..v5}, dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_12/testString(Ljava/lang/String;)V
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.d
new file mode 100644
index 0000000..d177e76
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_13.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_13
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method private toIntPvt()I
+.limit regs 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_13/toIntPvt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.d
new file mode 100644
index 0000000..c90b576
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.d
@@ -0,0 +1,61 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_14.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_14
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v4, 300
+    const v5, 3
+    move-object v3, v6
+    invoke-super/range {v3..v5}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 100
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 659
+    if-ne v2, v4, Label0
+    
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 0
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.java
new file mode 100644
index 0000000..32af085
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super_range.d;
+
+    
+public class T_invoke_super_range_14{
+
+    public boolean run() {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.d
new file mode 100644
index 0000000..7c57710
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_15.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15/testN()V
+       return-void
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.java
new file mode 100644
index 0000000..dfd335a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_15 extends TSuper {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.d
new file mode 100644
index 0000000..90d9a21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_16.d
@@ -0,0 +1,26 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_16.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       invoke-super/range {v2}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.d
new file mode 100644
index 0000000..962adb5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_17.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_17
+.super dot/junit/opcodes/invoke_super_range/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.java
new file mode 100644
index 0000000..5d87c2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super_range.d;
+
+    
+public class T_invoke_super_range_17 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.d
new file mode 100644
index 0000000..709fad6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_18.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super_range/TestStubs;)V
+.limit regs 5
+
+       invoke-super/range {v4}, dot/junit/opcodes/invoke_super_range/TestStubs/TestStub()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.java
new file mode 100644
index 0000000..fec68ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_18.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_super_range.d;
+
+import dot.junit.opcodes.invoke_super_range.TestStubs;
+
+public class T_invoke_super_range_18 {
+    public void run(TestStubs stubs) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.d
new file mode 100644
index 0000000..d30cc05
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_19.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_19
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       move-object v0, v3
+       const/4 v1, 1
+       invoke-super/range {v0, v1}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19/toInt(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.java
new file mode 100644
index 0000000..d359454
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_super_range.d;
+
+
+public class T_invoke_super_range_19 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.d
new file mode 100644
index 0000000..b8c9051
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_2.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_2
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 8
+       const v7, 0    
+       invoke-super/range {v7}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2/toInt()I
+
+       move-result v0
+       return v0
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 777
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.java
new file mode 100644
index 0000000..c9a5f0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_2{
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.d
new file mode 100644
index 0000000..7ea46f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_20.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_super_range/TestStubs;)V
+.limit regs 5
+
+       invoke-super/range {v4}, dot/junit/opcodes/invoke_super_range/TestStubs/TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.java
new file mode 100644
index 0000000..2e9724c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_20.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_super_range.d;
+
+import dot.junit.opcodes.invoke_super_range.TestStubs;
+
+public class T_invoke_super_range_20 {
+    public void run(TestStubs stubs) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.d
new file mode 100644
index 0000000..efe22e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_22.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_22.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_22
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_super_range/d/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_super_range/d/TPlain/<init>()V
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/TSuper/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.d
new file mode 100644
index 0000000..5877042
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_23.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_23.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_23
+.super dot/junit/opcodes/invoke_super_range/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_super_range/d/TSuper
+       invoke-direct {v2}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/TSuper2/test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.d
new file mode 100644
index 0000000..dcc399d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_24.d
@@ -0,0 +1,58 @@
+; Copyright (C) 2008 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.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_super_range.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+; =====================================
+
+.source TTestInterfaceImpl.java
+.class public dot.junit.opcodes.invoke_super_range.d.TTestInterfaceImpl
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_super_range.d.TTestInterface
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+; =====================================
+
+.source T_invoke_super_range_24.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_24
+.super dot/junit/opcodes/invoke_super_range/d/TTestInterfaceImpl
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TTestInterfaceImpl/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       invoke-super/range {v7}, dot/junit/opcodes/invoke_super_range/d/TTestInterface/test()V
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.d
new file mode 100644
index 0000000..1a9d17a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_25.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_25
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 4
+
+       new-instance v3, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25
+       invoke-super/range {v3}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_25/toInt()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.d
new file mode 100644
index 0000000..eb1a1f5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_4.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_4
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4/toIntNative()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.java
new file mode 100644
index 0000000..d9b6b9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.d
new file mode 100644
index 0000000..bf38cab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_5.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_5
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/TSuper/toIntStatic()I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.java
new file mode 100644
index 0000000..aa448e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_5.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_super_range.d;
+
+public class T_invoke_super_range_5 extends TSuper {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.d
new file mode 100644
index 0000000..bb9161c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_6.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_6
+.super dot/junit/opcodes/invoke_super_range/ATest
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/ATest/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/ATest/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.java
new file mode 100644
index 0000000..64229eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_6.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super_range.d;
+
+import dot.junit.opcodes.invoke_super_range.ATest;
+
+public class T_invoke_super_range_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.d
new file mode 100644
index 0000000..f170aac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_7.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_7
+.super dot/junit/opcodes/invoke_super_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_super_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-super/range {v2}, dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.java
new file mode 100644
index 0000000..d09e351
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_super_range.d;
+
+    
+public class T_invoke_super_range_7 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.d
new file mode 100644
index 0000000..ed4d3ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_8.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+     
+       invoke-super/range {v6..v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dfh
new file mode 100644
index 0000000..3b8efa1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dfh
@@ -0,0 +1,288 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 677c55cc
+    CC 55 7C 67 
+// parsed: offset 12, len 20: signature           : c17c...13a7
+    C1 7C 21 3E 4F CA 1A 28 AD C6 6A 29 3E DE 7A A7 DC B7 13 A7 
+// parsed: offset 32, len 4: file_size           : 636
+    7C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 500 (0x0001f4)
+    F4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 236 (0x0000ec)
+    EC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 268 (0x00010c)
+    0C 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 336 (0x000150) "<init>"
+    50 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 344 (0x000158) "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+    58 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 409 (0x000199) "Ljava/lang/Object;"
+    99 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 429 (0x0001ad) "T_invoke_super_range_8.java"
+    AD 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 458 (0x0001ca) "V"
+    CA 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 461 (0x0001cd) "Z"
+    CD 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 464 (0x0001d0) "ZL"
+    D0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 468 (0x0001d4) "ZLL"
+    D4 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 473 (0x0001d9) "equals"
+    D9 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 481 (0x0001e1) "run"
+    E1 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "ZL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 320 (0x000140)
+    06 00 00 00 03 00 00 00 40 01 00 00 
+// parsed: offset 192, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "ZLL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 328 (0x000148)
+    07 00 00 00 03 00 00 00 48 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 204, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 212, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 2 (0x000002) name_idx: 9 (0x000009) "run"
+    00 00 02 00 09 00 00 00 
+// parsed: offset 220, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 228, len 8: [3] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "equals"
+    01 00 01 00 08 00 00 00 
+
+// class_defs:
+// parsed: offset 236, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_invoke_super_range_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 486 (0x0001e6)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 E6 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_8.<init>"
+    // parsed: offset 268, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 284, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 01 00 
+        // parsed: offset 290, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_8.run"
+    // parsed: offset 292, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 294, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 296, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 298, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 300, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 304, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 308, len 6: |0000: invoke-super/range {v6..v7}, Ljava/lang/Object;.equals:(Ljava/lang/Object;)Z // method@0003
+//@mod            75 02 03 00 06 00 
+            75 02 03 01 06 00 
+        // parsed: offset 314, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 316, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 318, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 320, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 324, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 1
+        01 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 1
+        01 00 
+// parsed: offset 336, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 344, len 65: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+    3F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 72 61 6E 67 65 5F 38 3B 00 
+// parsed: offset 409, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 429, len 29: TYPE_STRING_DATA_ITEM [3] "T_invoke_super_range_8.java"
+    1B 54 5F 69 6E 76 6F 6B 65 5F 73 75 70 65 72 5F 72 61 6E 67 65 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 458, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 461, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 464, len 4: TYPE_STRING_DATA_ITEM [6] "ZL"
+    02 5A 4C 00 
+// parsed: offset 468, len 5: TYPE_STRING_DATA_ITEM [7] "ZLL"
+    03 5A 4C 4C 00 
+// parsed: offset 473, len 8: TYPE_STRING_DATA_ITEM [8] "equals"
+    06 65 71 75 61 6C 73 00 
+// parsed: offset 481, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_8;"
+    // parsed: offset 486, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 487, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 488, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 489, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 490, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 491, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 494, len 2: code_off: 268 (0x00010c)
+                8C 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 496, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 497, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 498, len 2: code_off: 292 (0x000124)
+                A4 02 
+// map_list:
+    // parsed: offset 500, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 504, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 516, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 528, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 152 (0x000098)
+        02 00 00 00 04 00 00 00 98 00 00 00 
+    // parsed: offset 540, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 03 00 00 00 A8 00 00 00 
+    // parsed: offset 552, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 204 (0x0000cc)
+        05 00 00 00 04 00 00 00 CC 00 00 00 
+    // parsed: offset 564, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 236 (0x0000ec)
+        06 00 00 00 01 00 00 00 EC 00 00 00 
+    // parsed: offset 576, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 268 (0x00010c)
+        01 20 00 00 02 00 00 00 0C 01 00 00 
+    // parsed: offset 588, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 320 (0x000140)
+        01 10 00 00 02 00 00 00 40 01 00 00 
+    // parsed: offset 600, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 336 (0x000150)
+        02 20 00 00 0A 00 00 00 50 01 00 00 
+    // parsed: offset 612, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 486 (0x0001e6)
+        00 20 00 00 01 00 00 00 E6 01 00 00 
+    // parsed: offset 624, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 500 (0x0001f4)
+        00 10 00 00 01 00 00 00 F4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.d
new file mode 100644
index 0000000..e97d513
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_super_range/d/T_invoke_super_range_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_super_range_9.java
+.class public dot.junit.opcodes.invoke_super_range.d.T_invoke_super_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-super/range {v7..v8}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/ATest.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/ATest.java
new file mode 100644
index 0000000..f102992
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/TestStubs.java
new file mode 100644
index 0000000..e495f54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/TestStubs.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/Test_invoke_virtual.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/Test_invoke_virtual.java
new file mode 100644
index 0000000..6e41ec1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/Test_invoke_virtual.java
@@ -0,0 +1,340 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_1;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_10;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_14;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_15;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_17;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_18;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_19;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_20;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_4;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_5;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_6;
+import dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_7;
+
+public class Test_invoke_virtual extends DxTestCase {
+
+    /**
+     * @title invoke virtual method
+     */
+    public void testN1() {
+        T_invoke_virtual_1 t = new T_invoke_virtual_1();
+        int a = 1;
+        String sa = "a" + a;
+        String sb = "a1";
+        assertTrue(t.run(sa, sb));
+        assertFalse(t.run(t, sa));
+        assertFalse(t.run(sb, t));
+    }
+
+    /**
+     * @title Invoke protected method of superclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_7
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        T_invoke_virtual_7 t = new T_invoke_virtual_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_virtual and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_14
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        T_invoke_virtual_14 t = new T_invoke_virtual_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Recursion of method lookup procedure
+     */
+    public void testN6() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_17
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        T_invoke_virtual_17 t = new T_invoke_virtual_17();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE1() {
+        T_invoke_virtual_1 t = new T_invoke_virtual_1();
+        String s = "s";
+        try {
+            t.run(null, s);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE2() {
+        T_invoke_virtual_4 t = new T_invoke_virtual_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_6
+        //@uses dot.junit.opcodes.invoke_virtual.ATest
+        T_invoke_virtual_6 t = new T_invoke_virtual_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;clinit&gt; may not be called using invoke-virtual
+     */
+    public void testVFE3() {
+        try {
+            new T_invoke_virtual_10().run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;init&gt; may not be called using invoke_virtual
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_22
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        //@uses dot.junit.opcodes.invoke_virtual.d.TPlain
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_23
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper2
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call static method.
+     */
+    public void testVFE10() {
+         try {
+             new T_invoke_virtual_5().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke non-existing method.
+     */
+    public void testVFE12() {
+         try {
+             new T_invoke_virtual_15().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of other class.
+     */
+    public void testVFE13() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_18
+        //@uses dot.junit.opcodes.invoke_virtual.TestStubs
+         try {
+             new T_invoke_virtual_18().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to invoke protected method of unrelated class.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_20
+        //@uses dot.junit.opcodes.invoke_virtual.TestStubs
+         try {
+             new T_invoke_virtual_20().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_19
+        //@uses dot.junit.opcodes.invoke_virtual.d.TSuper
+         try {
+             new T_invoke_virtual_19().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title invoke-virtual shall be used to invoke private methods
+     */
+    public void testVFE16() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_13");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A13
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE19() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TPlain.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TPlain.d
new file mode 100644
index 0000000..f0328ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TPlain.d
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 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.
+
+.source TPlain.java
+.class public dot.junit.opcodes.invoke_virtual.d.TPlain
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.d
new file mode 100644
index 0000000..3b7a591
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.d
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 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.
+
+.source TSuper.java
+.class public dot.junit.opcodes.invoke_virtual.d.TSuper
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+    
+.method public toInt(F)I 
+.limit regs 3
+    int-to-float v0, v2
+    return v0
+.end method
+
+.method public native toIntNative()I    
+.end method
+    
+.method public static toIntStatic()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+  
+.method protected toIntP()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+
+.method private toIntPvt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+    
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 349
+    const v1, 344656
+    div-int v2, v2, v3
+    return v2
+.end method   
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.java
new file mode 100644
index 0000000..eb0b27a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper.java
@@ -0,0 +1,46 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_virtual.d;
+
+public class TSuper {
+
+    public int toInt() {
+        return 0;
+    }
+
+    public int toInt(float value) {
+        return 0;
+    }
+
+    public native int toIntNative();
+
+    public static int toIntStatic() {
+        return 0;
+    }
+
+    protected int toIntP() {
+        return 0;
+    }
+
+    private int toIntPvt() {
+        return 0;
+    }
+
+    public int testArgsOrder(int arg1, int arg2) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.d
new file mode 100644
index 0000000..2137c4c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/TSuper2.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 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.
+
+.source TSuper2.java
+.class public dot.junit.opcodes.invoke_virtual.d.TSuper2
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public test()I 
+.limit regs 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.d
new file mode 100644
index 0000000..3192c0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_1.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.java
new file mode 100644
index 0000000..f242600
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_1 {
+
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.d
new file mode 100644
index 0000000..2c5c909
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_10.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_10
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+    invoke-virtual {v0}, dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_10/<clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.java
new file mode 100644
index 0000000..24898f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.d
new file mode 100644
index 0000000..68ca8c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_11.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v6}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.d
new file mode 100644
index 0000000..02d509a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_12.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_12.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test(Ljava/lang/String;)V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v5, v7}, dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_12/test(Ljava/lang/String;)V
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.d
new file mode 100644
index 0000000..dcf28f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_13.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_13/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.d
new file mode 100644
index 0000000..743ddf4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.d
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_14.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_14
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v3, 300
+    const v4, 3
+
+    invoke-virtual {v6, v3, v4}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 100
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 659
+    if-ne v2, v4, Label0
+    
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.java
new file mode 100644
index 0000000..d0a8d40
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual.d;
+
+    
+public class T_invoke_virtual_14{
+
+    public boolean run() {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.d
new file mode 100644
index 0000000..ad196c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_15.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15/testN()V
+       return-void
+.end method
+
+.method public test()V
+.limit regs 1
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.java
new file mode 100644
index 0000000..a3d1b68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_15.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_15 {
+    public void run() {
+    }
+    public void test() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.d
new file mode 100644
index 0000000..0f0ab56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_16.d
@@ -0,0 +1,26 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_16.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       invoke-virtual {v2}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.d
new file mode 100644
index 0000000..da55ec7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_17.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_17
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.java
new file mode 100644
index 0000000..918e3b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual.d;
+
+    
+public class T_invoke_virtual_17 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.d
new file mode 100644
index 0000000..32097da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_18.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual/TestStubs;)V
+.limit regs 5
+       invoke-virtual {v4}, dot/junit/opcodes/invoke_virtual/TestStubs/TestStub()V
+Label6:
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.java
new file mode 100644
index 0000000..c6b0c6f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_18.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_virtual.d;
+
+import dot.junit.opcodes.invoke_virtual.TestStubs;
+
+public class T_invoke_virtual_18 {
+    public void run(TestStubs stub) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.d
new file mode 100644
index 0000000..ce0b550
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_19.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_19
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const/4 v2, 1
+       invoke-virtual {v3, v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19/toInt(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.java
new file mode 100644
index 0000000..36e3515
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_19.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_19 extends TSuper {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.d
new file mode 100644
index 0000000..f655091
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_20.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual/TestStubs;)V
+.limit regs 5
+Label0:
+
+       invoke-virtual {v4}, dot/junit/opcodes/invoke_virtual/TestStubs/TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.java
new file mode 100644
index 0000000..0954ddb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_20.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_virtual.d;
+
+import dot.junit.opcodes.invoke_virtual.TestStubs;
+
+public class T_invoke_virtual_20 {
+    public void run(TestStubs stub) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.d
new file mode 100644
index 0000000..135f037
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_22.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_22.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_22
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_virtual/d/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_virtual/d/TPlain/<init>()V
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/TSuper/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.d
new file mode 100644
index 0000000..071a91f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_23.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_23.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_23
+.super dot/junit/opcodes/invoke_virtual/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_virtual/d/TSuper
+       invoke-direct {v2}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/TSuper2/test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.d
new file mode 100644
index 0000000..1804cce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_24.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 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.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_virtual.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+.source T_invoke_virtual_24.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_24
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_virtual.d.TTestInterface
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       invoke-virtual {v3}, dot/junit/opcodes/invoke_virtual/d/TTestInterface/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.d
new file mode 100644
index 0000000..7816b12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_25.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_25.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_25
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       new-instance v6, java/lang/Object
+       invoke-virtual {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.d
new file mode 100644
index 0000000..5de2f49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_4.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4/test()V
+       return-void
+.end method
+
+.method public native test()V
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.java
new file mode 100644
index 0000000..40cc1fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.d
new file mode 100644
index 0000000..6f18698d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_5.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static test()V
+.limit regs 0
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.java
new file mode 100644
index 0000000..a2e32f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_virtual.d;
+
+public class T_invoke_virtual_5 {
+    public static void test() {
+    }
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.d
new file mode 100644
index 0000000..a3f42ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_6.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_6
+.super dot/junit/opcodes/invoke_virtual/ATest
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/ATest/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/ATest/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.java
new file mode 100644
index 0000000..fd8e058
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_6.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual.d;
+
+import dot.junit.opcodes.invoke_virtual.ATest;
+
+public class T_invoke_virtual_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.d
new file mode 100644
index 0000000..2e3a6a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_7.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_7
+.super dot/junit/opcodes/invoke_virtual/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual {v2}, dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.java
new file mode 100644
index 0000000..27b16ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual.d;
+
+    
+public class T_invoke_virtual_7 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.d
new file mode 100644
index 0000000..c6ef760
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_8.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dfh
new file mode 100644
index 0000000..a556dba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dfh
@@ -0,0 +1,288 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a8d05097
+    97 50 D0 A8 
+// parsed: offset 12, len 20: signature           : 6f6c...0043
+    6F 6C D4 68 F7 7B 24 4C 91 C7 92 D9 30 AA 0C 5B EB 08 00 43 
+// parsed: offset 32, len 4: file_size           : 624
+    70 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 236 (0x0000ec)
+    EC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 356
+    64 01 00 00 
+// parsed: offset 108, len 4: data_off            : 268 (0x00010c)
+    0C 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 336 (0x000150) "<init>"
+    50 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 344 (0x000158) "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+    58 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 401 (0x000191) "Ljava/lang/Object;"
+    91 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 421 (0x0001a5) "T_invoke_virtual_8.java"
+    A5 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 446 (0x0001be) "V"
+    BE 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 449 (0x0001c1) "Z"
+    C1 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 452 (0x0001c4) "ZL"
+    C4 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 456 (0x0001c8) "ZLL"
+    C8 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 461 (0x0001cd) "equals"
+    CD 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 469 (0x0001d5) "run"
+    D5 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "ZL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 320 (0x000140)
+    06 00 00 00 03 00 00 00 40 01 00 00 
+// parsed: offset 192, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "ZLL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 328 (0x000148)
+    07 00 00 00 03 00 00 00 48 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 204, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 212, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 2 (0x000002) name_idx: 9 (0x000009) "run"
+    00 00 02 00 09 00 00 00 
+// parsed: offset 220, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 228, len 8: [3] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "equals"
+    01 00 01 00 08 00 00 00 
+
+// class_defs:
+// parsed: offset 236, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_invoke_virtual_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 474 (0x0001da)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 DA 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_8.<init>"
+    // parsed: offset 268, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 284, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 01 00 
+        // parsed: offset 290, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_8.run"
+    // parsed: offset 292, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 294, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 296, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 298, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 300, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 304, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 308, len 6: |0000: invoke-virtual {v6, v7}, Ljava/lang/Object;.equals:(Ljava/lang/Object;)Z // method@0003
+//@mod            6E 20 03 00 76 00 
+            6E 20 03 01 76 00 
+        // parsed: offset 314, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 316, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 318, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 320, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 324, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 1
+        01 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 1
+        01 00 
+// parsed: offset 336, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 344, len 57: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+    37 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 38 3B 00 
+// parsed: offset 401, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 421, len 25: TYPE_STRING_DATA_ITEM [3] "T_invoke_virtual_8.java"
+    17 54 5F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 446, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 449, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 452, len 4: TYPE_STRING_DATA_ITEM [6] "ZL"
+    02 5A 4C 00 
+// parsed: offset 456, len 5: TYPE_STRING_DATA_ITEM [7] "ZLL"
+    03 5A 4C 4C 00 
+// parsed: offset 461, len 8: TYPE_STRING_DATA_ITEM [8] "equals"
+    06 65 71 75 61 6C 73 00 
+// parsed: offset 469, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_8;"
+    // parsed: offset 474, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 475, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 476, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 477, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 479, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 482, len 2: code_off: 268 (0x00010c)
+                8C 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 484, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 485, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 486, len 2: code_off: 292 (0x000124)
+                A4 02 
+// map_list:
+    // parsed: offset 488, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 152 (0x000098)
+        02 00 00 00 04 00 00 00 98 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 03 00 00 00 A8 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 204 (0x0000cc)
+        05 00 00 00 04 00 00 00 CC 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 236 (0x0000ec)
+        06 00 00 00 01 00 00 00 EC 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 268 (0x00010c)
+        01 20 00 00 02 00 00 00 0C 01 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 320 (0x000140)
+        01 10 00 00 02 00 00 00 40 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 336 (0x000150)
+        02 20 00 00 0A 00 00 00 50 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 474 (0x0001da)
+        00 20 00 00 01 00 00 00 DA 01 00 00 
+    // parsed: offset 612, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.d
new file mode 100644
index 0000000..f695913
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual/d/T_invoke_virtual_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_9.java
+.class public dot.junit.opcodes.invoke_virtual.d.T_invoke_virtual_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual {v8, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/ATest.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/ATest.java
new file mode 100644
index 0000000..e6ebd5a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/ATest.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual_range;
+
+public abstract class ATest {
+    
+    public abstract void test();       
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/TestStubs.java
new file mode 100644
index 0000000..d00c43e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/TestStubs.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual_range;
+
+public class TestStubs {
+    @SuppressWarnings("unused")
+    private void TestStub() {
+        // used by testE6
+    }
+
+    protected void TestStubP() {
+        // used by testE7
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/Test_invoke_virtual_range.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/Test_invoke_virtual_range.java
new file mode 100644
index 0000000..2368dc3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/Test_invoke_virtual_range.java
@@ -0,0 +1,347 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual_range;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_1;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_10;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_14;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_15;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_17;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_18;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_19;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_2;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_20;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_4;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_5;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_6;
+import dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_7;
+
+public class Test_invoke_virtual_range extends DxTestCase {
+
+    /**
+     * @title invoke virtual method
+     */
+    public void testN1() {
+        T_invoke_virtual_range_1 t = new T_invoke_virtual_range_1();
+        int a = 1;
+        String sa = "a" + a;
+        String sb = "a1";
+        assertTrue(t.run(sa, sb));
+        assertFalse(t.run(t, sa));
+        assertFalse(t.run(sb, t));
+    }
+
+    /**
+     * @title Invoke protected method of superclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_7
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        T_invoke_virtual_range_7 t = new T_invoke_virtual_range_7();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Check that new frame is created by invoke_virtual_range and
+     * arguments are passed to method
+     */
+    public void testN5() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_14
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        T_invoke_virtual_range_14 t = new T_invoke_virtual_range_14();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Recursion of method lookup procedure
+     */
+    public void testN6() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_17
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        T_invoke_virtual_range_17 t = new T_invoke_virtual_range_17();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title Big number of arguments
+     */
+    public void testN7() {
+        T_invoke_virtual_range_2 t = new T_invoke_virtual_range_2();
+        assertEquals(1, t.run());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE1() {
+        T_invoke_virtual_range_1 t = new T_invoke_virtual_range_1();
+        String s = "s";
+        try {
+            t.run(null, s);
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Native method can't be linked
+     */
+    public void testE2() {
+        T_invoke_virtual_range_4 t = new T_invoke_virtual_range_4();
+        try {
+            t.run();
+            fail("expected UnsatisfiedLinkError");
+        } catch (UnsatisfiedLinkError ule) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Attempt to invoke abstract method
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_6
+        //@uses dot.junit.opcodes.invoke_virtual_range.ATest
+        T_invoke_virtual_range_6 t = new T_invoke_virtual_range_6();
+        try {
+            t.run();
+            fail("expected AbstractMethodError");
+        } catch (AbstractMethodError iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title invalid constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;clinit&gt; may not be called using invoke-virtual
+     */
+    public void testVFE3() {
+        try {
+            new T_invoke_virtual_range_10().run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title number of arguments passed to method
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B9
+     * @title types of arguments passed to method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A15
+     * @title &lt;init&gt; may not be called using invoke_virtual_range
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  protected method
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_22
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TPlain
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B10
+     * @title assignment incompatible references when accessing
+     *                  public method
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_23
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper2
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to call static method.
+     */
+    public void testVFE10() {
+         try {
+             new T_invoke_virtual_range_5().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke non-existing method.
+     */
+    public void testVFE12() {
+         try {
+             new T_invoke_virtual_range_15().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to invoke private method of other class.
+     */
+    public void testVFE13() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_18
+        //@uses dot.junit.opcodes.invoke_virtual_range.TestStubs
+         try {
+             new T_invoke_virtual_range_18().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to invoke protected method of unrelated class.
+     */
+    public void testVFE14() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_20
+        //@uses dot.junit.opcodes.invoke_virtual_range.TestStubs
+         try {
+             new T_invoke_virtual_range_20().run(new TestStubs());
+             fail("expected IllegalAccessError");
+         } catch (IllegalAccessError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Method has different signature.
+     */
+    public void testVFE15() {
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_19
+        //@uses dot.junit.opcodes.invoke_virtual_range.d.TSuper
+         try {
+             new T_invoke_virtual_range_19().run();
+             fail("expected NoSuchMethodError");
+         } catch (NoSuchMethodError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title invoke-virtual/range shall be used to invoke private methods
+     */
+    public void testVFE16() {
+         try {
+             Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_13");
+             fail("expected a verification exception");
+         } catch (Throwable t) {
+             DxUtil.checkVerifyException(t);
+         }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A14
+     * @title attempt to invoke interface method
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance methods may only be invoked on already initialized instances.
+     */
+    public void testVFE19() {
+        try {
+            Class.forName("dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_25");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/Snippet.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/Snippet.java
new file mode 100644
index 0000000..14c735e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/Snippet.java
@@ -0,0 +1,7 @@
+package dot.junit.opcodes.invoke_virtual_range.d;
+
+public class Snippet {
+    public void test() {
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.d
new file mode 100644
index 0000000..c39399e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TPlain.d
@@ -0,0 +1,31 @@
+; Copyright (C) 2008 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.
+
+.source TPlain.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.TPlain
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.d
new file mode 100644
index 0000000..7b4d7b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper.d
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 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.
+
+.source TSuper.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.TSuper
+.super  java/lang/Object
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+
+.method public toInt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+    
+.method public toInt(F)I 
+.limit regs 3
+    int-to-float v0, v2
+    return v0
+.end method
+
+.method public native toIntNative()I    
+.end method
+    
+.method public static toIntStatic()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method
+  
+.method protected toIntP()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+
+.method private toIntPvt()I 
+.limit regs 3
+    const v0, 5
+    return v0
+.end method  
+    
+.method public testArgsOrder(II)I
+.limit regs 4
+    const v0, 349
+    const v1, 344656
+    div-int v2, v2, v3
+    return v2
+.end method   
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.d
new file mode 100644
index 0000000..882b227
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/TSuper2.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 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.
+
+.source TSuper2.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.TSuper2
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public test()I 
+.limit regs 3
+    const v0, 123
+    return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.d
new file mode 100644
index 0000000..b7f13d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_1.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual/range {v6..v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.java
new file mode 100644
index 0000000..2c49efe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_1 {
+
+    public boolean run(Object x, Object y) {
+        return x.equals(y);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.d
new file mode 100644
index 0000000..3f327a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_10.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_10
+.super java/lang/Object
+
+.method static <clinit>()V
+    return-void
+.end method
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 1
+    invoke-virtual/range {v0}, dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_10/<clinit>()V
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.java
new file mode 100644
index 0000000..bc32697
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_10 {
+    
+    public void run() {
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.d
new file mode 100644
index 0000000..b109ace
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_11.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual/range {v6}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.d
new file mode 100644
index 0000000..9b63ef8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_12.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_12.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test(Ljava/lang/String;)V
+    return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       move-object v6, v5
+       invoke-virtual/range {v6..v7}, dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_12/test(Ljava/lang/String;)V
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.d
new file mode 100644
index 0000000..fd6de25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_13.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private getInt()I
+.limit regs 3
+       const/16 v1, 345
+       return v1
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_13/getInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.d
new file mode 100644
index 0000000..32cd481
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.d
@@ -0,0 +1,57 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_14.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_14
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 7
+
+    const v1, 123
+    const v2, 659
+    
+    const v4, 300
+    const v5, 3
+    move-object v3, v6
+
+    invoke-virtual/range {v3..v5}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14/testArgsOrder(II)I
+
+    move-result v3
+    const v4, 100
+    if-ne v3, v4, Label0
+
+    const v4, 123
+    if-ne v1, v4, Label0
+
+    const v4, 659
+    if-ne v2, v4, Label0
+    
+    const v0, 1
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.java
new file mode 100644
index 0000000..c3b8e0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_14.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+    
+public class T_invoke_virtual_range_14{
+
+    public boolean run() {
+        return false;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.d
new file mode 100644
index 0000000..d42643b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_15.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_15
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15/testN()V
+       return-void
+.end method
+
+.method public test()V
+.limit regs 1
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.java
new file mode 100644
index 0000000..969a1abb53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_15.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_15 {
+    public void run() {
+    }
+    public void test() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.d
new file mode 100644
index 0000000..5a71786
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_16.d
@@ -0,0 +1,26 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_16.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       invoke-virtual/range {v2}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.d
new file mode 100644
index 0000000..173c6bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_17.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_17
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17/toInt()I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.java
new file mode 100644
index 0000000..689f741
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_17.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+    
+public class T_invoke_virtual_range_17 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.d
new file mode 100644
index 0000000..cc11d06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_18.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_18
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual_range/TestStubs;)V
+.limit regs 5
+       invoke-virtual/range {v4}, dot/junit/opcodes/invoke_virtual_range/TestStubs/TestStub()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.java
new file mode 100644
index 0000000..8f01c30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_18.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+import dot.junit.opcodes.invoke_virtual_range.TestStubs;
+
+public class T_invoke_virtual_range_18 {
+    public void run(TestStubs stubs) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.d
new file mode 100644
index 0000000..704726b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_19.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_19
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       move-object v2, v3
+       const/4 v3, 1
+       invoke-virtual/range {v2..v3}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19/toInt(I)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.java
new file mode 100644
index 0000000..fefa96d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_19.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+
+public class T_invoke_virtual_range_19 {
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.d
new file mode 100644
index 0000000..eac70b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.d
@@ -0,0 +1,77 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_2.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test(IIIIIIIIII)I
+.limit regs 11
+    const v0, 10
+    if-ne v0, v10, Label0
+    const v0, 9
+    if-ne v0, v9, Label0
+    const v0, 8
+    if-ne v0, v8, Label0
+    const v0, 7
+    if-ne v0, v7, Label0
+    const v0, 6
+    if-ne v0, v6, Label0
+    const v0, 5
+    if-ne v0, v5, Label0
+    const v0, 4
+    if-ne v0, v4, Label0
+    const v0, 3
+    if-ne v0, v3, Label0
+    const v0, 2
+    if-ne v0, v2, Label0
+    const v0, 1
+    if-ne v0, v1, Label0
+
+    const v0, 1
+    return v0
+Label0:
+    const v0, 0
+    return v0
+
+.end method
+
+.method public run()I
+.limit regs 16
+       move-object v0, v15
+         const v1, 1
+          const v2, 2
+          const v3, 3
+          const v4, 4
+          const v5, 5
+          const v6, 6
+          const v7, 7
+          const v8, 8
+          const v9, 9
+          const v10, 10
+
+       invoke-virtual/range {v0..v10}, dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_2/test(IIIIIIIIII)I
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.java
new file mode 100644
index 0000000..bc934f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_2 {
+
+    public int run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.d
new file mode 100644
index 0000000..ab7a4cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_20.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_20
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ldot/junit/opcodes/invoke_virtual_range/TestStubs;)V
+.limit regs 5
+Label0:
+
+       invoke-virtual/range {v4}, dot/junit/opcodes/invoke_virtual_range/TestStubs/TestStubP()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.java
new file mode 100644
index 0000000..77c639d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_20.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+import dot.junit.opcodes.invoke_virtual_range.TestStubs;
+
+public class T_invoke_virtual_range_20 {
+    public void run(TestStubs stubs) {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.d
new file mode 100644
index 0000000..6f6fad5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_22.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_22.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_22
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_virtual_range/d/TPlain
+       invoke-direct {v2}, dot/junit/opcodes/invoke_virtual_range/d/TPlain/<init>()V
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.d
new file mode 100644
index 0000000..cf21428
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_23.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_23.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_23
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper2
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper2/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+
+       new-instance v2, dot/junit/opcodes/invoke_virtual_range/d/TSuper
+       invoke-direct {v2}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/TSuper2/test()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.d
new file mode 100644
index 0000000..9e2022f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_24.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 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.
+
+.source TTestInterface.java
+.interface public dot.junit.opcodes.invoke_virtual_range.d.TTestInterface
+
+.method public abstract test()V
+.end method
+
+.source T_invoke_virtual_range_24.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_24
+.super java/lang/Object
+.implements dot.junit.opcodes.invoke_virtual_range.d.TTestInterface
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public test()V
+    return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       invoke-virtual/range {v3}, dot/junit/opcodes/invoke_virtual_range/d/TTestInterface/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.d
new file mode 100644
index 0000000..1d39236
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_25.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_25.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_25
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+
+       new-instance v6, java/lang/Object
+       invoke-virtual/range {v6, v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.d
new file mode 100644
index 0000000..f68a194
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_4.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4/test()V
+       return-void
+.end method
+
+.method public native test()V
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.java
new file mode 100644
index 0000000..3b6eff0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_4 {
+    
+    public native void test();
+
+    public void run() {
+        test();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.d
new file mode 100644
index 0000000..361e00c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_5.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static test()V
+.limit regs 0
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.java
new file mode 100644
index 0000000..b14ffb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+public class T_invoke_virtual_range_5 {
+    public static void test() {
+    }
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.d
new file mode 100644
index 0000000..2dcf120
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_6.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_6
+.super dot/junit/opcodes/invoke_virtual_range/ATest
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/ATest/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/ATest/test()V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.java
new file mode 100644
index 0000000..52bdea9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_6.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+import dot.junit.opcodes.invoke_virtual_range.ATest;
+
+public class T_invoke_virtual_range_6 extends ATest {
+    
+    public void test(){
+        int i = 2+5;
+    }
+
+    public void run() {
+        test();
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.d
new file mode 100644
index 0000000..b5c44f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_7.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_7
+.super dot/junit/opcodes/invoke_virtual_range/d/TSuper
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, dot/junit/opcodes/invoke_virtual_range/d/TSuper/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       invoke-virtual/range {v2}, dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7/toIntP()I
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.java
new file mode 100644
index 0000000..333e3ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.invoke_virtual_range.d;
+
+    
+public class T_invoke_virtual_range_7 {
+
+    public int run() {
+        return 0;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.d
new file mode 100644
index 0000000..e2538f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_8.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual/range {v6..v7}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dfh
new file mode 100644
index 0000000..390f2a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dfh
@@ -0,0 +1,290 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a1e659ab
+    AB 59 E6 A1 
+// parsed: offset 12, len 20: signature           : 8e95...8017
+    8E 95 BB E6 C0 B0 72 A9 B2 A8 7C 08 01 0B 76 DC A6 B9 80 17 
+// parsed: offset 32, len 4: file_size           : 644
+    84 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 508 (0x0001fc)
+    FC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 236 (0x0000ec)
+    EC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 376
+    78 01 00 00 
+// parsed: offset 108, len 4: data_off            : 268 (0x00010c)
+    0C 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 336 (0x000150) "<init>"
+    50 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 344 (0x000158) "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+    58 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 413 (0x00019d) "Ljava/lang/Object;"
+    9D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 433 (0x0001b1) "T_invoke_virtual_range_8.java"
+    B1 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 464 (0x0001d0) "V"
+    D0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 467 (0x0001d3) "Z"
+    D3 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 470 (0x0001d6) "ZL"
+    D6 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 474 (0x0001da) "ZLL"
+    DA 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 479 (0x0001df) "equals"
+    DF 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 487 (0x0001e7) "run"
+    E7 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+    01 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "ZL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 320 (0x000140)
+    06 00 00 00 03 00 00 00 40 01 00 00 
+// parsed: offset 192, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "ZLL"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 328 (0x000148)
+    07 00 00 00 03 00 00 00 48 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 204, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 212, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 2 (0x000002) name_idx: 9 (0x000009) "run"
+    00 00 02 00 09 00 00 00 
+// parsed: offset 220, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 228, len 8: [3] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "equals"
+    01 00 01 00 08 00 00 00 
+
+// class_defs:
+// parsed: offset 236, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_invoke_virtual_range_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 492 (0x0001ec)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 EC 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_8.<init>"
+    // parsed: offset 268, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 284, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 01 00 
+        // parsed: offset 290, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_8.run"
+    // parsed: offset 292, len 2: registers_size: 8
+        08 00 
+    // parsed: offset 294, len 2: ins_size: 3
+        03 00 
+    // parsed: offset 296, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 298, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 300, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 304, len 4: insns_size: 5
+        05 00 00 00 
+    // insns:
+        // parsed: offset 308, len 6: |0000: invoke-virtual/range {v6..v7}, Ljava/lang/Object;.equals:(Ljava/lang/Object;)Z // method@0003
+//@mod            74 02 03 00 06 00 
+            74 02 03 01 06 00 
+        // parsed: offset 314, len 2: |0003: move-result v0
+            0A 00 
+        // parsed: offset 316, len 2: |0004: return v0
+            0F 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 318, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 320, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 324, len 2: type_item [0] type_idx: 1
+        01 00 
+// parsed: offset 326, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 2
+        02 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 1
+        01 00 
+    // parsed: offset 334, len 2: type_item [1] type_idx: 1
+        01 00 
+// parsed: offset 336, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 344, len 69: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+    43 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 72 61 6E 67 65 2F 64 2F 54 5F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 72 61 6E 67 65 5F 38 3B 00 
+// parsed: offset 413, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 433, len 31: TYPE_STRING_DATA_ITEM [3] "T_invoke_virtual_range_8.java"
+    1D 54 5F 69 6E 76 6F 6B 65 5F 76 69 72 74 75 61 6C 5F 72 61 6E 67 65 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 464, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 467, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 470, len 4: TYPE_STRING_DATA_ITEM [6] "ZL"
+    02 5A 4C 00 
+// parsed: offset 474, len 5: TYPE_STRING_DATA_ITEM [7] "ZLL"
+    03 5A 4C 4C 00 
+// parsed: offset 479, len 8: TYPE_STRING_DATA_ITEM [8] "equals"
+    06 65 71 75 61 6C 73 00 
+// parsed: offset 487, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_8;"
+    // parsed: offset 492, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 493, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 494, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 495, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 496, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 497, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 500, len 2: code_off: 268 (0x00010c)
+                8C 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 502, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 503, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 504, len 2: code_off: 292 (0x000124)
+                A4 02 
+// parsed: offset 506, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 508, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 512, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 524, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 536, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 152 (0x000098)
+        02 00 00 00 04 00 00 00 98 00 00 00 
+    // parsed: offset 548, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 03 00 00 00 A8 00 00 00 
+    // parsed: offset 560, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 204 (0x0000cc)
+        05 00 00 00 04 00 00 00 CC 00 00 00 
+    // parsed: offset 572, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 236 (0x0000ec)
+        06 00 00 00 01 00 00 00 EC 00 00 00 
+    // parsed: offset 584, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 268 (0x00010c)
+        01 20 00 00 02 00 00 00 0C 01 00 00 
+    // parsed: offset 596, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 2
+    //      offset: 320 (0x000140)
+        01 10 00 00 02 00 00 00 40 01 00 00 
+    // parsed: offset 608, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 336 (0x000150)
+        02 20 00 00 0A 00 00 00 50 01 00 00 
+    // parsed: offset 620, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 492 (0x0001ec)
+        00 20 00 00 01 00 00 00 EC 01 00 00 
+    // parsed: offset 632, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 508 (0x0001fc)
+        00 10 00 00 01 00 00 00 FC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.d
new file mode 100644
index 0000000..393f733
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/invoke_virtual_range/d/T_invoke_virtual_range_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_invoke_virtual_range_9.java
+.class public dot.junit.opcodes.invoke_virtual_range.d.T_invoke_virtual_range_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;Ljava/lang/Object;)Z
+.limit regs 8
+
+       invoke-virtual/range {v7..v8}, java/lang/Object/equals(Ljava/lang/Object;)Z
+
+       move-result v0
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/TestStubs.java
new file mode 100644
index 0000000..8ebe9bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput;
+
+public class TestStubs {
+    // used by testVFE9
+    protected int TestStubField = 0;
+    
+    // used by testE5
+    public final int TestStubFieldFinal = 0;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/Test_iput.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/Test_iput.java
new file mode 100644
index 0000000..f69b308
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/Test_iput.java
@@ -0,0 +1,343 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput.d.T_iput_1;
+import dot.junit.opcodes.iput.d.T_iput_10;
+import dot.junit.opcodes.iput.d.T_iput_11;
+import dot.junit.opcodes.iput.d.T_iput_12;
+import dot.junit.opcodes.iput.d.T_iput_13;
+import dot.junit.opcodes.iput.d.T_iput_14;
+import dot.junit.opcodes.iput.d.T_iput_15;
+import dot.junit.opcodes.iput.d.T_iput_17;
+import dot.junit.opcodes.iput.d.T_iput_19;
+import dot.junit.opcodes.iput.d.T_iput_5;
+import dot.junit.opcodes.iput.d.T_iput_7;
+import dot.junit.opcodes.iput.d.T_iput_8;
+import dot.junit.opcodes.iput.d.T_iput_9;
+
+public class Test_iput extends DxTestCase {
+
+    /**
+     * @title type - int
+     */
+    public void testN1() {
+        T_iput_1 t = new T_iput_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(1000000, t.st_i1);
+    }
+
+    /**
+     * @title type - float
+     */
+    public void testN2() {
+        T_iput_19 t = new T_iput_19();
+        assertEquals(0.0f, t.st_f1);
+        t.run();
+        assertEquals(3.14f, t.st_f1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN3() {
+        T_iput_12 t = new T_iput_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(1000000, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput.d.T_iput_1
+        //@uses dot.junit.opcodes.iput.d.T_iput_14
+        T_iput_14 t = new T_iput_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(1000000, t.getProtectedField());
+    }
+
+    /**
+     * @title Trying to put float into integer field. Dalvik doens't distinguish 32-bits types
+     * internally, so this operation makes no sense but shall not crash the VM.
+     */
+    public void testN6() {
+        T_iput_5 t = new  T_iput_5();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_13 t = new T_iput_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title put integer into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double field
+     * with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A11
+     * @title Attempt to set static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput.TestStubs
+        //@uses dot.junit.opcodes.iput.d.T_iput_8
+        try {
+            new T_iput_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput.d.T_iput_1
+        //@uses dot.junit.opcodes.iput.d.T_iput_15
+        try {
+            new T_iput_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput shall not work for boolean fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput shall not work for byte fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput.d.T_iput_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.iput.TestStubs
+        //@uses dot.junit.opcodes.iput.d.T_iput_11
+    	try {
+            new T_iput_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.d
new file mode 100644
index 0000000..062a5f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_1.java
+.class public dot.junit.opcodes.iput.d.T_iput_1
+.super java/lang/Object
+
+.field public  st_i1 I
+.field protected  st_p1 I
+.field private  st_pvt1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()I
+.limit regs 2
+
+       iget v0, v1, dot.junit.opcodes.iput.d.T_iput_1.st_pvt1 I
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_1.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.java
new file mode 100644
index 0000000..b508414
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput.d;
+
+public class T_iput_1 {
+    public  int st_i1;
+    protected  int st_p1;
+    private  int st_pvt1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+    
+    public  int getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.d
new file mode 100644
index 0000000..782486a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_10.java
+.class public dot.junit.opcodes.iput.d.T_iput_10
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_10.st_i1N I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.java
new file mode 100644
index 0000000..4f630e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput.d;
+
+public class T_iput_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.d
new file mode 100644
index 0000000..9fb06de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_11.java
+.class public dot.junit.opcodes.iput.d.T_iput_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput/TestStubs/<init>()V
+
+       const v1, 1000000
+       iput v1, v0, dot.junit.opcodes.iput.TestStubs.TestStubFieldFinal I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.java
new file mode 100644
index 0000000..9c47bd5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput.d;
+
+public class T_iput_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.d
new file mode 100644
index 0000000..73104b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_12.java
+.class public dot.junit.opcodes.iput.d.T_iput_12
+.super java/lang/Object
+
+.field public final st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_12.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.java
new file mode 100644
index 0000000..4fbe9c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput.d;
+
+public class T_iput_12 {
+    public  int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.d
new file mode 100644
index 0000000..3760a4f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_13.java
+.class public dot.junit.opcodes.iput.d.T_iput_13
+.super java/lang/Object
+
+.field public  st_i1 I
+.field protected  st_p1 I
+.field private  st_pvt1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 1000000
+       iput v1, v0, dot.junit.opcodes.iput.d.T_iput_13.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.java
new file mode 100644
index 0000000..53423f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput.d;
+
+public class T_iput_13 {
+    
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.d
new file mode 100644
index 0000000..ba404d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_14.java
+.class public dot.junit.opcodes.iput.d.T_iput_14
+.super dot/junit/opcodes/iput/d/T_iput_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput/d/T_iput_1/<init>()V
+       return-void
+.end method
+
+.method public getProtectedField()I
+.limit regs 2
+
+       iget v0, v1, dot.junit.opcodes.iput.d.T_iput_1.st_p1 I
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_1.st_p1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.java
new file mode 100644
index 0000000..7d7e102
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput.d;
+
+public class T_iput_14 extends T_iput_1{
+    
+    public void run() {
+        st_p1 = 1000000;
+    }
+    
+    public  int getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.d
new file mode 100644
index 0000000..8864195
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_15.java
+.class public dot.junit.opcodes.iput.d.T_iput_15
+.super dot/junit/opcodes/iput/d/T_iput_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput/d/T_iput_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 12321
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_1.st_pvt1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.java
new file mode 100644
index 0000000..f432d27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput.d;
+
+public class T_iput_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.d
new file mode 100644
index 0000000..e0b35ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_17.java
+.class public dot.junit.opcodes.iput.d.T_iput_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_17.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.java
new file mode 100644
index 0000000..0c1bb0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput.d;
+
+public class T_iput_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_18.d
new file mode 100644
index 0000000..1ec565d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_18.java
+.class public dot.junit.opcodes.iput.d.T_iput_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.d
new file mode 100644
index 0000000..f7f8997
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_19.java
+.class public dot.junit.opcodes.iput.d.T_iput_19
+.super java/lang/Object
+
+.field public  st_f1 F
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_19.st_f1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.java
new file mode 100644
index 0000000..bf6deee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_19.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput.d;
+
+public class T_iput_19 {
+    public  float st_f1;
+    
+    
+    public void run() {
+        st_f1 = 3.14f;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_2.d
new file mode 100644
index 0000000..a89c29d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_2.java
+.class public dot.junit.opcodes.iput.d.T_iput_2
+.super java/lang/Object
+
+.field public  st_d1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const-wide v1, 1000000.000000
+       iput v1, v3, dot.junit.opcodes.iput.d.T_iput_2.st_d1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_20.d
new file mode 100644
index 0000000..0161449
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_20.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_20.java
+.class public dot.junit.opcodes.iput.d.T_iput_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 0
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_21.d
new file mode 100644
index 0000000..f189066
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_21.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_21.java
+.class public dot.junit.opcodes.iput.d.T_iput_21
+.super java/lang/Object
+
+.field public  st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1234    
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_22.d
new file mode 100644
index 0000000..71b8cdf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_22.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_22.java
+.class public dot.junit.opcodes.iput.d.T_iput_22
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_22.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_23.d
new file mode 100644
index 0000000..e0bf2a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_23.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_23.java
+.class public dot.junit.opcodes.iput.d.T_iput_23
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_24.d
new file mode 100644
index 0000000..4e6d187
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_24.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_24.java
+.class public dot.junit.opcodes.iput.d.T_iput_24
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput v0, v3, dot.junit.opcodes.iput.d.T_iput_24.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.d
new file mode 100644
index 0000000..bdb6b35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_3.java
+.class public dot.junit.opcodes.iput.d.T_iput_3
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1234
+       iput v0, v2, dot.junit.opcodes.iput.d.T_iput_3.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.dfh
new file mode 100644
index 0000000..0474f19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput/d/T_iput_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput/d/T_iput_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 3bce3c78
+    78 3C CE 3B 
+// parsed: offset 12, len 20: signature           : 15da...0f9b
+    15 DA 79 0D 61 BF 5F C9 34 71 F7 04 83 3D 02 17 E9 5E 0F 9B 
+// parsed: offset 32, len 4: file_size           : 540
+    1C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 404 (0x000194)
+    94 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 304
+    30 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "I"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/iput/d/T_iput_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 336 (0x000150) "Ljava/lang/Object;"
+    50 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 356 (0x000164) "T_iput_3.java"
+    64 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 371 (0x000173) "V"
+    73 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 374 (0x000176) "run"
+    76 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 379 (0x00017b) "st_i1"
+    7B 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iput/d/T_iput_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iput/d/T_iput_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 386 (0x000182)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 82 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput.d.T_iput_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput.d.T_iput_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x000004d2 int
+            14 00 D2 04 00 00 
+        // parsed: offset 282, len 4: |0003: iput v0, v2, Ldot/junit/opcodes/iput/d/T_iput_3;.st_i1:I // field@0000
+//@mod            59 20 00 00 
+            59 20 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 299, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iput/d/T_iput_3;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 2F 64 2F 54 5F 69 70 75 74 5F 33 3B 00 
+// parsed: offset 336, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 356, len 15: TYPE_STRING_DATA_ITEM [4] "T_iput_3.java"
+    0D 54 5F 69 70 75 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 371, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 374, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 379, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput/d/T_iput_3;"
+    // parsed: offset 386, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 387, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 388, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 389, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 390, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 391, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 392, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 393, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 396, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 399, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 400, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 402, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 404, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 408, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 420, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 432, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 444, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 456, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 468, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 480, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 492, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 504, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 516, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 386 (0x000182)
+        00 20 00 00 01 00 00 00 82 01 00 00 
+    // parsed: offset 528, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 10 00 00 01 00 00 00 94 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_30.d
new file mode 100644
index 0000000..08df316
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_30.java
+.class public dot.junit.opcodes.iput.d.T_iput_30
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput/d/T_iput_30
+    const v1, 0
+    iput v1, v0, dot.junit.opcodes.iput.d.T_iput_30.st_i1 I
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_4.d
new file mode 100644
index 0000000..f324be4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_4.java
+.class public dot.junit.opcodes.iput.d.T_iput_4
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput v3, v2, dot.junit.opcodes.iput.d.T_iput_4.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.d
new file mode 100644
index 0000000..c34dbac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_5.java
+.class public dot.junit.opcodes.iput.d.T_iput_5
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)V
+.limit regs 3
+
+       iput v2, v1, dot.junit.opcodes.iput.d.T_iput_5.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.java
new file mode 100644
index 0000000..6df6a7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput.d;
+
+public class T_iput_5 {
+    public  int st_i1;
+    
+    public void run(float f) {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.d
new file mode 100644
index 0000000..af7b003
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_7.java
+.class public dot.junit.opcodes.iput.d.T_iput_7
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_7.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.java
new file mode 100644
index 0000000..c7407e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput.d;
+
+public class T_iput_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.d
new file mode 100644
index 0000000..6c1ed20
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_8.java
+.class public dot.junit.opcodes.iput.d.T_iput_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+      new-instance v0, Ldot/junit/opcodes/iput/TestStubs;
+      invoke-direct {v0}, dot/junit/opcodes/iput/TestStubs/<init>()V
+
+       const v1, 0
+       iput v1, v0, dot.junit.opcodes.iput.TestStubs.TestStubField I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.java
new file mode 100644
index 0000000..264aef0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput.d;
+
+public class T_iput_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.d
new file mode 100644
index 0000000..7c7d755
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_9.java
+.class public dot.junit.opcodes.iput.d.T_iput_9
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput v1, v2, dot.junit.opcodes.iput.d.T_iput_9noclass.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.java
new file mode 100644
index 0000000..a3c1695
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_iput_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput.d;
+
+public class T_iput_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_sput_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_sput_3.dfh
new file mode 100644
index 0000000..f7d95ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput/d/T_sput_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput/d/T_sput_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput/d/T_sput_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 07553f66
+    66 3F 55 07 
+// parsed: offset 12, len 20: signature           : 2441...71d9
+    24 41 F7 4C E7 A3 98 B5 AC 67 0E F8 6B D1 13 E3 DD 10 71 D9 
+// parsed: offset 32, len 4: file_size           : 540
+    1C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 404 (0x000194)
+    94 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 304
+    30 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "I"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 336 (0x000150) "Ljava/lang/Object;"
+    50 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 356 (0x000164) "T_sput_3.java"
+    64 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 371 (0x000173) "V"
+    73 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 374 (0x000176) "run"
+    76 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 379 (0x00017b) "st_i1"
+    7B 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput/d/T_sput_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 386 (0x000182)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 82 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput.d.T_sput_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput.d.T_sput_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x000004d2 int
+            14 00 D2 04 00 00 
+        // parsed: offset 282, len 4: |0003: sput v0, Ldot/junit/opcodes/sput/d/T_sput_3;.st_i1:I // field@0000
+//@mod            67 00 00 00 
+            67 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 299, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 2F 64 2F 54 5F 73 70 75 74 5F 33 3B 00 
+// parsed: offset 336, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 356, len 15: TYPE_STRING_DATA_ITEM [4] "T_sput_3.java"
+    0D 54 5F 73 70 75 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 371, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 374, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 379, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    // parsed: offset 386, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 387, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 388, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 389, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 390, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 391, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 392, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 393, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 396, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 399, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 400, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 402, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 404, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 408, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 420, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 432, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 444, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 456, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 468, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 480, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 492, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 504, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 516, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 386 (0x000182)
+        00 20 00 00 01 00 00 00 82 01 00 00 
+    // parsed: offset 528, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 10 00 00 01 00 00 00 94 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/TestStubs.java
new file mode 100644
index 0000000..07919e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_boolean;
+
+public class TestStubs {
+    // used by testVFE9
+    protected boolean TestStubField = false;
+    
+    // used by testE5
+    public final boolean TestStubFieldFinal = false;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/Test_iput_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/Test_iput_boolean.java
new file mode 100644
index 0000000..6a2419b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/Test_iput_boolean.java
@@ -0,0 +1,329 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_10;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_11;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_12;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_13;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_14;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_15;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_17;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_7;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_8;
+import dot.junit.opcodes.iput_boolean.d.T_iput_boolean_9;
+
+
+public class Test_iput_boolean extends DxTestCase {
+
+    /**
+     * @title put boolean into field
+     */
+    public void testN1() {
+        T_iput_boolean_1 t = new T_iput_boolean_1();
+        assertEquals(false, t.st_i1);
+        t.run();
+        assertEquals(true, t.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_boolean_12 t = new T_iput_boolean_12();
+        assertEquals(false, t.st_i1);
+        t.run();
+        assertEquals(true, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_14
+        T_iput_boolean_14 t = new T_iput_boolean_14();
+        assertEquals(false, t.getProtectedField());
+        t.run();
+        assertEquals(true, t.getProtectedField());
+    }
+
+
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_boolean_13 t = new T_iput_boolean_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B14
+     * @title put boolean into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_boolean_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title put value '2' into boolean field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A11
+     * @title Attempt to set static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_boolean_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_boolean.TestStubs
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_8
+        try {
+            new T_iput_boolean_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_boolean_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_boolean_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_15
+        try {
+            new T_iput_boolean_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput_boolean shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput_boolean shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput_boolean shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput_boolean shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title iput_boolean shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title iput_boolean shall not work for byte fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_boolean.d.T_iput_boolean_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_boolean.TestStubs
+        //@uses dot.junit.opcodes.iput_boolean.d.T_iput_boolean_11
+        try {
+            new T_iput_boolean_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.d
new file mode 100644
index 0000000..47ee9dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_1.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1
+.super java/lang/Object
+
+.field public  st_i1 Z
+.field protected  st_p1 Z
+.field private  st_pvt1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()Z
+.limit regs 2
+
+       iget-boolean v0, v1, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_pvt1 Z
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.java
new file mode 100644
index 0000000..14d2b98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_1 {
+    public  boolean st_i1;
+    protected  boolean st_p1;
+    private  boolean st_pvt1;
+    
+    public void run() {
+        st_i1 = true;
+    }
+    
+    public  boolean getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.d
new file mode 100644
index 0000000..77f762a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_10.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_10
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_10.st_i1N Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.java
new file mode 100644
index 0000000..7279fe0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.d
new file mode 100644
index 0000000..9f8d148
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_11.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_boolean/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_boolean/TestStubs/<init>()V
+
+       const v1, 1
+       iput-boolean v1, v0, dot.junit.opcodes.iput_boolean.TestStubs.TestStubFieldFinal Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.java
new file mode 100644
index 0000000..77de3e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.d
new file mode 100644
index 0000000..327fef6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_12.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_12
+.super java/lang/Object
+
+.field public  final st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_12.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.java
new file mode 100644
index 0000000..4321bfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_12 {
+    public  boolean st_i1;
+    
+    public void run() {
+        st_i1 = true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.d
new file mode 100644
index 0000000..cbe6560
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_13.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_13
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 1
+       iput-boolean v1, v0, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_13.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.java
new file mode 100644
index 0000000..c523c5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_13 {
+    
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.d
new file mode 100644
index 0000000..8a7f23e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_14.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_14
+.super dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()Z
+.limit regs 2
+
+       iget-boolean v0, v1, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_p1 Z
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_p1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.java
new file mode 100644
index 0000000..e708762
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_14 extends T_iput_boolean_1{
+    
+    public void run() {
+        st_p1 = true;
+    }
+    
+    public  boolean getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.d
new file mode 100644
index 0000000..605fab5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_15.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_15
+.super dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_boolean/d/T_iput_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_1.st_pvt1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.java
new file mode 100644
index 0000000..893595b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.d
new file mode 100644
index 0000000..2d0e858
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_17.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_17.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.java
new file mode 100644
index 0000000..c7dbaeb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.d
new file mode 100644
index 0000000..5ca6791
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_18.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.d
new file mode 100644
index 0000000..aed12db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_19.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_19
+.super java/lang/Object
+
+.field public  st_f1 F
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_19.st_f1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.java
new file mode 100644
index 0000000..3828d90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_19.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_19 {
+    public  float st_f1;
+    
+    
+    public void run() {
+        st_f1 = 3.14f;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.d
new file mode 100644
index 0000000..20ba2cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_2.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_2
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-boolean v0, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_4.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.d
new file mode 100644
index 0000000..b7bb68c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_20.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_20.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 0    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.d
new file mode 100644
index 0000000..a05e7d9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_21.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_21.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_21
+.super java/lang/Object
+
+.field public  st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.d
new file mode 100644
index 0000000..5953110
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_22.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_22.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.d
new file mode 100644
index 0000000..3d51bf4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_23.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_23.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_23
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.d
new file mode 100644
index 0000000..ccd56a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_24.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_24.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_24
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v0, 1    
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_24.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.d
new file mode 100644
index 0000000..864852f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_3.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-boolean v0, v3, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dfh
new file mode 100644
index 0000000..971a7eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 77b34b2d
+    2D 4B B3 77 
+// parsed: offset 12, len 20: signature           : 6ffc...5670
+    6F FC D3 2C 6D F3 E5 94 FA 99 F9 FC 05 BD 3A 88 8C CD 56 70 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 328
+    48 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 349 (0x00015d) "Ljava/lang/Object;"
+    5D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 369 (0x000171) "T_iput_boolean_3.java"
+    71 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 392 (0x000188) "V"
+    88 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "Z"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "run"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "st_i1"
+    93 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  type_idx: 3 (0x000003) name_idx: 7 (0x000007) "st_i1"
+    00 00 03 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    00 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_iput_boolean_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_boolean.d.T_iput_boolean_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: iput-boolean v0, v3, Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;.st_i1:Z // field@0000
+//@mod            5C 30 00 00 
+            5C 30 00 01
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 53: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 62 6F 6F 6C 65 61 6E 2F 64 2F 54 5F 69 70 75 74 5F 62 6F 6F 6C 65 61 6E 5F 33 3B 00 
+// parsed: offset 349, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 369, len 23: TYPE_STRING_DATA_ITEM [3] "T_iput_boolean_3.java"
+    15 54 5F 69 70 75 74 5F 62 6F 6F 6C 65 61 6E 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 392, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 398, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 403, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_boolean/d/T_iput_boolean_3;"
+    // parsed: offset 410, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 414, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 415, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.d
new file mode 100644
index 0000000..f68e154
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_30.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_30
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_boolean/d/T_iput_boolean_30
+    const v1, 0
+    iput-boolean v1, v0, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_30.st_i1 Z
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.d
new file mode 100644
index 0000000..5b0d440
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_4.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_4
+.super java/lang/Object
+
+.field public  st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-boolean v3, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_4.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_6.d
new file mode 100644
index 0000000..29230ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_6.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_6
+.super java/lang/Object
+
+.field public  s Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v2, 2    
+       iput-boolean v2, v5, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_6.s Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.d
new file mode 100644
index 0000000..1c26b25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_7.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_7
+.super java/lang/Object
+
+.field public static st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_7.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.java
new file mode 100644
index 0000000..c48328e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.d
new file mode 100644
index 0000000..ce16612
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_8.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_boolean/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_boolean/TestStubs/<init>()V
+       const v1, 0
+       iput-boolean v1, v0, dot.junit.opcodes.iput_boolean.TestStubs.TestStubField Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.java
new file mode 100644
index 0000000..6706b11
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.d
new file mode 100644
index 0000000..b740349
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_boolean_9.java
+.class public dot.junit.opcodes.iput_boolean.d.T_iput_boolean_9
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-boolean v1, v2, dot.junit.opcodes.iput_boolean.d.T_iput_boolean_9noclass.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.java
new file mode 100644
index 0000000..86c2fbf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_boolean/d/T_iput_boolean_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_boolean.d;
+
+public class T_iput_boolean_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/TestStubs.java
new file mode 100644
index 0000000..c8906b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_byte;
+
+public class TestStubs {
+    // used by testVFE9
+    protected byte TestStubField = 77;
+    
+    // used by testE5
+    public final byte TestStubFieldFinal = 77;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/Test_iput_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/Test_iput_byte.java
new file mode 100644
index 0000000..f67e22b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/Test_iput_byte.java
@@ -0,0 +1,330 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_1;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_10;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_11;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_12;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_13;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_14;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_15;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_17;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_7;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_8;
+import dot.junit.opcodes.iput_byte.d.T_iput_byte_9;
+
+public class Test_iput_byte extends DxTestCase {
+    /**
+     * @title put byte into field
+     */
+    public void testN1() {
+        T_iput_byte_1 t = new T_iput_byte_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_byte_12 t = new T_iput_byte_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_1
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_14
+        T_iput_byte_14 t = new T_iput_byte_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(77, t.getProtectedField());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_byte_13 t = new T_iput_byte_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title put byte into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_byte_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title put value '256' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A11
+     * @title Attempt to set static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_byte_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_byte.TestStubs
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_8
+        try {
+            new T_iput_byte_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_byte_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_byte_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_1
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_15
+        try {
+            new T_iput_byte_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput-byte shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-byte shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-byte shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-byte shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-byte shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-byte shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_byte.d.T_iput_byte_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_byte.TestStubs
+        //@uses dot.junit.opcodes.iput_byte.d.T_iput_byte_11
+    	try {
+            new T_iput_byte_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.d
new file mode 100644
index 0000000..860157b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_1.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_1
+.super java/lang/Object
+
+.field public  st_i1 B
+.field protected  st_p1 B
+.field private  st_pvt1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()B
+.limit regs 2
+
+       iget-byte v0, v1, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_pvt1 B
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.java
new file mode 100644
index 0000000..d926c18
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_1 {
+    public  byte st_i1;
+    protected  byte st_p1;
+    private  byte st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public  byte getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.d
new file mode 100644
index 0000000..279b2a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_10.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_10
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_10.st_i1N B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.java
new file mode 100644
index 0000000..f7278f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.d
new file mode 100644
index 0000000..9c80461
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_11.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_byte/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_byte/TestStubs/<init>()V
+
+       const v1, 1
+       iput-byte v1, v0, dot.junit.opcodes.iput_byte.TestStubs.TestStubFieldFinal B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.java
new file mode 100644
index 0000000..a77d3c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.d
new file mode 100644
index 0000000..ee0355b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_12.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_12
+.super java/lang/Object
+
+.field public  final st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_12.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.java
new file mode 100644
index 0000000..c64063c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_12 {
+    public  byte st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.d
new file mode 100644
index 0000000..26cd104
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_13.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_13
+.super java/lang/Object
+
+.field public  st_i1 B
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 77
+       iput-byte v1, v0, dot.junit.opcodes.iput_byte.d.T_iput_byte_13.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.java
new file mode 100644
index 0000000..e907164
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_13 {
+    
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.d
new file mode 100644
index 0000000..9be11ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_14.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_14
+.super dot/junit/opcodes/iput_byte/d/T_iput_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_byte/d/T_iput_byte_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()B
+.limit regs 2
+
+       iget-byte v0, v1, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_p1 B
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_p1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.java
new file mode 100644
index 0000000..e1bcc4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_14 extends T_iput_byte_1{
+    
+    public void run() {
+        st_p1 = 77;
+    }
+    
+    public byte getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.d
new file mode 100644
index 0000000..2f14e14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_15.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_15
+.super dot/junit/opcodes/iput_byte/d/T_iput_byte_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_byte/d/T_iput_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_1.st_pvt1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.java
new file mode 100644
index 0000000..249926f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.d
new file mode 100644
index 0000000..1f8bd94
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_17.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_17.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.java
new file mode 100644
index 0000000..6eca2a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.d
new file mode 100644
index 0000000..153aae1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_18.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.d
new file mode 100644
index 0000000..3805c5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_2.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_2
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-byte v0, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_4.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.d
new file mode 100644
index 0000000..2452e5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_20.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-byte v3, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d
new file mode 100644
index 0000000..9f8bd0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_21.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_21
+.super java/lang/Object
+
+.field public  st_s I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_21.st_s I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d
new file mode 100644
index 0000000..e0a19be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_22.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_22
+.super java/lang/Object
+
+.field public  st_b I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_22.st_b I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.d
new file mode 100644
index 0000000..afae162
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_23.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_23
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.d
new file mode 100644
index 0000000..ac31166
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_24.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-byte v0, v3, dot.junit.opcodes.iput_byte.d.T_iput_byte_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.d
new file mode 100644
index 0000000..c3a8828
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_3.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_3
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-byte v0, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_3.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dfh
new file mode 100644
index 0000000..74792e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_byte/d/T_iput_byte_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6e4345b3
+    B3 45 43 6E 
+// parsed: offset 12, len 20: signature           : febf...8438
+    FE BF FB D0 A8 35 97 52 FC 71 45 C2 D3 90 2B F7 03 4D 84 38 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "B"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 346 (0x00015a) "Ljava/lang/Object;"
+    5A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 366 (0x00016e) "T_iput_byte_3.java"
+    6E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 386 (0x000182) "V"
+    82 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "run"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 394 (0x00018a) "st_i1"
+    8A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "B"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_byte_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 401 (0x000191)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 91 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_byte.d.T_iput_byte_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_byte.d.T_iput_byte_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: iput-byte v0, v2, Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;.st_i1:B // field@0000
+//@mod            5D 20 00 00 
+            5D 20 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "B"
+    01 42 00 
+// parsed: offset 299, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 62 79 74 65 2F 64 2F 54 5F 69 70 75 74 5F 62 79 74 65 5F 33 3B 00 
+// parsed: offset 346, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [4] "T_iput_byte_3.java"
+    12 54 5F 69 70 75 74 5F 62 79 74 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 386, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 389, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 394, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_byte/d/T_iput_byte_3;"
+    // parsed: offset 401, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 402, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 403, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 404, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 405, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 406, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 408, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 411, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 413, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 415, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 417, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 401 (0x000191)
+        00 20 00 00 01 00 00 00 91 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.d
new file mode 100644
index 0000000..b29c0e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_30.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_30
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_byte/d/T_iput_byte_30
+    const v1, 0
+    iput-byte v1, v0, dot.junit.opcodes.iput_byte.d.T_iput_byte_30.st_i1 B
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.d
new file mode 100644
index 0000000..18a254f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_4.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_4
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-byte v3, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_4.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_6.d
new file mode 100644
index 0000000..d349e8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_6.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_6
+.super java/lang/Object
+
+.field public  st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 256
+       iput-byte v0, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_6.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.d
new file mode 100644
index 0000000..4ac5aa9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_7.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_7
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_7.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.java
new file mode 100644
index 0000000..3ff9a3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.d
new file mode 100644
index 0000000..34b537c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_8.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_byte/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_byte/TestStubs/<init>()V
+
+       const v1, 0
+       iput-byte v1, v0, dot.junit.opcodes.iput_byte.TestStubs.TestStubField B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.java
new file mode 100644
index 0000000..8a29bb2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.d
new file mode 100644
index 0000000..338b321
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_byte_9.java
+.class public dot.junit.opcodes.iput_byte.d.T_iput_byte_9
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-byte v1, v2, dot.junit.opcodes.iput_byte.d.T_iput_byte_9noclass.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.java
new file mode 100644
index 0000000..37f7a6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_byte/d/T_iput_byte_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_byte.d;
+
+public class T_iput_byte_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/TestStubs.java
new file mode 100644
index 0000000..a0d947f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_char;
+
+public class TestStubs {
+    // used by testVFE9
+    protected char TestStubField = 77;
+    
+    // used by testE5
+    public final char TestStubFieldFinal = 77;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/Test_iput_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/Test_iput_char.java
new file mode 100644
index 0000000..f3a4f9e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/Test_iput_char.java
@@ -0,0 +1,333 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_char.d.T_iput_char_1;
+import dot.junit.opcodes.iput_char.d.T_iput_char_10;
+import dot.junit.opcodes.iput_char.d.T_iput_char_11;
+import dot.junit.opcodes.iput_char.d.T_iput_char_12;
+import dot.junit.opcodes.iput_char.d.T_iput_char_13;
+import dot.junit.opcodes.iput_char.d.T_iput_char_14;
+import dot.junit.opcodes.iput_char.d.T_iput_char_15;
+import dot.junit.opcodes.iput_char.d.T_iput_char_17;
+import dot.junit.opcodes.iput_char.d.T_iput_char_7;
+import dot.junit.opcodes.iput_char.d.T_iput_char_8;
+import dot.junit.opcodes.iput_char.d.T_iput_char_9;
+
+public class Test_iput_char extends DxTestCase {
+    /**
+     * @title put char into field
+     */
+    public void testN1() {
+        T_iput_char_1 t = new T_iput_char_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_char_12 t = new T_iput_char_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_1
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_14
+        T_iput_char_14 t = new T_iput_char_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(77, t.getProtectedField());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_char_13 t = new T_iput_char_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title put char into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_char_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title put value '66000' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A11
+     * @title Attempt to set static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_char_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_char.TestStubs
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_8
+        try {
+            new T_iput_char_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_char_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_char_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_1
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_15
+        try {
+            new T_iput_char_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput-char shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-char shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-char shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-char shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-char shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-char shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_char.d.T_iput_char_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_char.TestStubs
+        //@uses dot.junit.opcodes.iput_char.d.T_iput_char_11
+    	try {
+            new T_iput_char_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.d
new file mode 100644
index 0000000..1872727
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_1.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_1
+.super java/lang/Object
+
+.field public  st_i1 C
+.field protected  st_p1 C
+.field private  st_pvt1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()C
+.limit regs 2
+
+       iget-char v0, v1, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_pvt1 C
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.java
new file mode 100644
index 0000000..a2a83cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_1 {
+    public  char st_i1;
+    protected  char st_p1;
+    private  char st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public  char getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.d
new file mode 100644
index 0000000..466cad9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_10.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_10
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_10.st_i1N C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.java
new file mode 100644
index 0000000..2e2c554
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.d
new file mode 100644
index 0000000..cd32504
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_11.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_char/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_char/TestStubs/<init>()V
+
+       const v1, 1
+       iput-char v1, v0, dot.junit.opcodes.iput_char.TestStubs.TestStubFieldFinal C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.java
new file mode 100644
index 0000000..629d319
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.d
new file mode 100644
index 0000000..9aeb2cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_12.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_12
+.super java/lang/Object
+
+.field public  final st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_12.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.java
new file mode 100644
index 0000000..b20146a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_12 {
+    public  char st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.d
new file mode 100644
index 0000000..9cbce64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_13.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_13
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 77
+       iput-char v1, v0, dot.junit.opcodes.iput_char.d.T_iput_char_13.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.java
new file mode 100644
index 0000000..5f15efc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_13.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_13 {
+    
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.d
new file mode 100644
index 0000000..71dca61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_14.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_14
+.super dot/junit/opcodes/iput_char/d/T_iput_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_char/d/T_iput_char_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()C
+.limit regs 2
+
+       iget-char v0, v1, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_p1 C
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_p1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.java
new file mode 100644
index 0000000..a55800a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_14 extends T_iput_char_1{
+    
+    public void run() {
+        st_p1 = 77;
+    }
+    
+    public  char getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.d
new file mode 100644
index 0000000..4cccb49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_15.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_15
+.super dot/junit/opcodes/iput_char/d/T_iput_char_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_char/d/T_iput_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_1.st_pvt1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.java
new file mode 100644
index 0000000..9419df4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.d
new file mode 100644
index 0000000..61e503d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_17.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_17.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.java
new file mode 100644
index 0000000..41d3dfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.d
new file mode 100644
index 0000000..a9d9ac9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_18.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.d
new file mode 100644
index 0000000..cc8cd62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_2.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_2
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-char v0, v2, dot.junit.opcodes.iput_char.d.T_iput_char_4.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.d
new file mode 100644
index 0000000..5aa31b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_20.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-char v3, v3, dot.junit.opcodes.iput_char.d.T_iput_char_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.d
new file mode 100644
index 0000000..b9f7cc6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_21.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_21
+.super java/lang/Object
+
+.field public  st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       iput-char v0, v3, dot.junit.opcodes.iput_char.d.T_iput_char_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.d
new file mode 100644
index 0000000..ca94dbd5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_22.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-char v0, v3, dot.junit.opcodes.iput_char.d.T_iput_char_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.d
new file mode 100644
index 0000000..3494a90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_23.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_23
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-char v0, v3, dot.junit.opcodes.iput_char.d.T_iput_char_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.d
new file mode 100644
index 0000000..d148a4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_24.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-char v0, v3, dot.junit.opcodes.iput_char.d.T_iput_char_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.d
new file mode 100644
index 0000000..05233a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_3.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_3
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-char v0, v2, dot.junit.opcodes.iput_char.d.T_iput_char_3.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.dfh
new file mode 100644
index 0000000..95d1306
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_char/d/T_iput_char_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_char/d/T_iput_char_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : bfb944c4
+    C4 44 B9 BF 
+// parsed: offset 12, len 20: signature           : 661f...6c76
+    66 1F 6A C5 E6 6E 82 B7 E8 AC B8 D2 AC 01 D4 58 34 56 6C 76 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "C"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 346 (0x00015a) "Ljava/lang/Object;"
+    5A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 366 (0x00016e) "T_iput_char_3.java"
+    6E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 386 (0x000182) "V"
+    82 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "run"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 394 (0x00018a) "st_i1"
+    8A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "C"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_char_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 401 (0x000191)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 91 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_char.d.T_iput_char_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_char.d.T_iput_char_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: iput-char v0, v2, Ldot/junit/opcodes/iput_char/d/T_iput_char_3;.st_i1:C // field@0000
+//@mod            5E 20 00 00 
+            5E 20 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "C"
+    01 43 00 
+// parsed: offset 299, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 63 68 61 72 2F 64 2F 54 5F 69 70 75 74 5F 63 68 61 72 5F 33 3B 00 
+// parsed: offset 346, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [4] "T_iput_char_3.java"
+    12 54 5F 69 70 75 74 5F 63 68 61 72 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 386, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 389, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 394, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_char/d/T_iput_char_3;"
+    // parsed: offset 401, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 402, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 403, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 404, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 405, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 406, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 408, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 411, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 413, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 415, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 417, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 401 (0x000191)
+        00 20 00 00 01 00 00 00 91 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.d
new file mode 100644
index 0000000..8182241
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_30.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_30
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_char/d/T_iput_char_30
+    const v1, 0
+    iput-char v1, v0, dot.junit.opcodes.iput_char.d.T_iput_char_30.st_i1 C
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.d
new file mode 100644
index 0000000..6f78812
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_4.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_4
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-char v3, v2, dot.junit.opcodes.iput_char.d.T_iput_char_4.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_6.d
new file mode 100644
index 0000000..5614d676
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_6.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_6
+.super java/lang/Object
+
+.field public  st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 66000
+       iput-char v0, v2, dot.junit.opcodes.iput_char.d.T_iput_char_6.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.d
new file mode 100644
index 0000000..13f4e50
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_7.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_7
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_7.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.java
new file mode 100644
index 0000000..4e148d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.d
new file mode 100644
index 0000000..95616a6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_8.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_char/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_char/TestStubs/<init>()V
+
+       const v1, 0
+       iput-char v1, v0, dot.junit.opcodes.iput_char.TestStubs.TestStubField C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.java
new file mode 100644
index 0000000..186ce0b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.d
new file mode 100644
index 0000000..d2efaae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_char_9.java
+.class public dot.junit.opcodes.iput_char.d.T_iput_char_9
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-char v1, v2, dot.junit.opcodes.iput_char.d.T_iput_char_9noclass.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.java
new file mode 100644
index 0000000..3cb3667d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_char/d/T_iput_char_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_char.d;
+
+public class T_iput_char_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/TestStubs.java
new file mode 100644
index 0000000..d8354b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_object;
+
+public class TestStubs {
+    // used by testVFE9
+    protected Object TestStubField = null;
+    
+    // used by testE5
+    public final Object TestStubFieldFinal = null;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/Test_iput_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/Test_iput_object.java
new file mode 100644
index 0000000..e2f8fa4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/Test_iput_object.java
@@ -0,0 +1,333 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_object.d.T_iput_object_1;
+import dot.junit.opcodes.iput_object.d.T_iput_object_10;
+import dot.junit.opcodes.iput_object.d.T_iput_object_11;
+import dot.junit.opcodes.iput_object.d.T_iput_object_12;
+import dot.junit.opcodes.iput_object.d.T_iput_object_13;
+import dot.junit.opcodes.iput_object.d.T_iput_object_14;
+import dot.junit.opcodes.iput_object.d.T_iput_object_15;
+import dot.junit.opcodes.iput_object.d.T_iput_object_17;
+import dot.junit.opcodes.iput_object.d.T_iput_object_7;
+import dot.junit.opcodes.iput_object.d.T_iput_object_8;
+import dot.junit.opcodes.iput_object.d.T_iput_object_9;
+
+public class Test_iput_object extends DxTestCase {
+    /**
+     * @title put reference into field
+     */
+    public void testN1() {
+        T_iput_object_1 t = new T_iput_object_1();
+        assertEquals(null, t.st_i1);
+        t.run();
+        assertEquals(t, t.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_object_12 t = new T_iput_object_12();
+        assertEquals(null, t.st_i1);
+        t.run();
+        assertEquals(t, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_1
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_14
+        T_iput_object_14 t = new T_iput_object_14();
+        assertEquals(null, t.getProtectedField());
+        t.run();
+        assertEquals(t, t.getProtectedField());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_object_13 t = new T_iput_object_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title put object into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_object_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A11
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_object_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_object.TestStubs
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_8
+        try {
+            new T_iput_object_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_object_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_object_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_1
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_15
+        try {
+            new T_iput_object_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput-object shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title assignment incompatible references
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-object shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-object shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-object shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-object shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-object shall not work for short fields
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_object.d.T_iput_object_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_object.TestStubs
+        //@uses dot.junit.opcodes.iput_object.d.T_iput_object_11
+    	try {
+            new T_iput_object_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.d
new file mode 100644
index 0000000..6a9215e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_1.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_1
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+.field protected  st_p1 Ljava/lang/Object;
+.field private  st_pvt1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()Ljava/lang/Object;
+.limit regs 2
+
+       iget-object v0, v1, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_pvt1 Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_i1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.java
new file mode 100644
index 0000000..fdedfda
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_1 {
+    public  Object st_i1;
+    protected  Object st_p1;
+    private  Object st_pvt1;
+    
+    public void run() {
+        st_i1 = this;
+    }
+    
+    public  Object getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.d
new file mode 100644
index 0000000..92f9cff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_10.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_10
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_10.st_i1N Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.java
new file mode 100644
index 0000000..01e9cb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.d
new file mode 100644
index 0000000..f75accc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_11.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_object/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_object/TestStubs/<init>()V
+
+       iput-object v2, v0, dot.junit.opcodes.iput_object.TestStubs.TestStubFieldFinal Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.java
new file mode 100644
index 0000000..03c14d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.d
new file mode 100644
index 0000000..69f1309
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_12.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_12
+.super java/lang/Object
+
+.field public  final st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_12.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.java
new file mode 100644
index 0000000..4a6da45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_12 {
+    public  Object st_i1;
+    
+    public void run() {
+        st_i1 = this;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.d
new file mode 100644
index 0000000..f282745
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_13.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_13
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       iput-object v2, v0, dot.junit.opcodes.iput_object.d.T_iput_object_13.st_i1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.java
new file mode 100644
index 0000000..334f14e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_13.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_object.d;
+
+
+public class T_iput_object_13 {
+    
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.d
new file mode 100644
index 0000000..4e420fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_14.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_14
+.super dot/junit/opcodes/iput_object/d/T_iput_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_object/d/T_iput_object_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()Ljava/lang/Object;
+.limit regs 2
+
+       iget-object v0, v1, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_p1 Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_p1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.java
new file mode 100644
index 0000000..2bc9c2a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_14 extends T_iput_object_1{
+    
+    public void run() {
+        st_p1 = this;
+    }
+    
+    public Object getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.d
new file mode 100644
index 0000000..35aeab9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_15.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_15
+.super dot/junit/opcodes/iput_object/d/T_iput_object_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_object/d/T_iput_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_1.st_pvt1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.java
new file mode 100644
index 0000000..84667f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.d
new file mode 100644
index 0000000..71eb363
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_17.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_17.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.java
new file mode 100644
index 0000000..6db4b58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.d
new file mode 100644
index 0000000..56d8da8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_18.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_18.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.d
new file mode 100644
index 0000000..805388f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_2.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_2
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1234    
+       iput-object v0, v2, dot.junit.opcodes.iput_object.d.T_iput_object_2.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.d
new file mode 100644
index 0000000..a9b90be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_20.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/String;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_20.st_o Ljava/lang/String;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.d
new file mode 100644
index 0000000..19aa1cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_21.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_21
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.d
new file mode 100644
index 0000000..8d7272e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_22.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.d
new file mode 100644
index 0000000..296a14b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_23.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_23
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.d
new file mode 100644
index 0000000..51bbb2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_24.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-object v3, v3, dot.junit.opcodes.iput_object.d.T_iput_object_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.d
new file mode 100644
index 0000000..fa05a78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_3.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_3
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+        iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_3.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.dfh
new file mode 100644
index 0000000..8a922e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_3.dfh
@@ -0,0 +1,253 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_object/d/T_iput_object_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_object/d/T_iput_object_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e2b84420
+    20 44 B8 E2 
+// parsed: offset 12, len 20: signature           : 498f...47af
+    49 8F 16 1B 5F D7 3D 35 18 CB F9 59 65 B7 A8 60 6A 19 47 AF 
+// parsed: offset 32, len 4: file_size           : 544
+    20 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 408 (0x000198)
+    98 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 7
+    07 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 140 (0x00008c)
+    8C 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 164 (0x0000a4)
+    A4 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 196 (0x0000c4)
+    C4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 228 (0x0000e4)
+    E4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 276 (0x000114) "<init>"
+    14 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 284 (0x00011c) "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+    1C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 335 (0x00014f) "Ljava/lang/Object;"
+    4F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 355 (0x000163) "T_iput_object_3.java"
+    63 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 377 (0x000179) "V"
+    79 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "run"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 385 (0x000181) "st_i1"
+    81 01 00 00 
+
+// type_ids:
+// parsed: offset 140, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+    01 00 00 00 
+// parsed: offset 144, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 152, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 164, len 8: [0] class_idx: 0 (0x000000)  type_idx: 1 (0x000001) name_idx: 6 (0x000006) "st_i1"
+    00 00 01 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 180, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 188, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 196, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_iput_object_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 392 (0x000188)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 88 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_object.d.T_iput_object_3.<init>"
+    // parsed: offset 228, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 230, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 232, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 234, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 236, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 240, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 244, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 250, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_object.d.T_iput_object_3.run"
+    // parsed: offset 252, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 254, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 256, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 258, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 260, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 264, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 268, len 4: |0000: iput-object v2, v2, Ldot/junit/opcodes/iput_object/d/T_iput_object_3;.st_i1:Ljava/lang/Object; // field@0000
+//@mod            5B 22 00 00 
+            5B 22 00 01 
+        // parsed: offset 272, len 2: |0002: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 274, len 2: PADDING
+    00 00 
+// parsed: offset 276, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 284, len 51: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 6F 62 6A 65 63 74 2F 64 2F 54 5F 69 70 75 74 5F 6F 62 6A 65 63 74 5F 33 3B 00 
+// parsed: offset 335, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 355, len 22: TYPE_STRING_DATA_ITEM [3] "T_iput_object_3.java"
+    14 54 5F 69 70 75 74 5F 6F 62 6A 65 63 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 377, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 380, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// parsed: offset 385, len 7: TYPE_STRING_DATA_ITEM [6] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_object/d/T_iput_object_3;"
+    // parsed: offset 392, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 393, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 394, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 395, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 396, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 397, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 399, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 402, len 2: code_off: 228 (0x0000e4)
+                E4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 404, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 405, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 406, len 2: code_off: 252 (0x0000fc)
+                FC 01 
+// map_list:
+    // parsed: offset 408, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 412, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 424, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 7
+    //      offset: 112 (0x000070)
+        01 00 00 00 07 00 00 00 70 00 00 00 
+    // parsed: offset 436, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 140 (0x00008c)
+        02 00 00 00 03 00 00 00 8C 00 00 00 
+    // parsed: offset 448, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 152 (0x000098)
+        03 00 00 00 01 00 00 00 98 00 00 00 
+    // parsed: offset 460, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 164 (0x0000a4)
+        04 00 00 00 01 00 00 00 A4 00 00 00 
+    // parsed: offset 472, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 172 (0x0000ac)
+        05 00 00 00 03 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 196 (0x0000c4)
+        06 00 00 00 01 00 00 00 C4 00 00 00 
+    // parsed: offset 496, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 228 (0x0000e4)
+        01 20 00 00 02 00 00 00 E4 00 00 00 
+    // parsed: offset 508, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 7
+    //      offset: 276 (0x000114)
+        02 20 00 00 07 00 00 00 14 01 00 00 
+    // parsed: offset 520, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 392 (0x000188)
+        00 20 00 00 01 00 00 00 88 01 00 00 
+    // parsed: offset 532, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 10 00 00 01 00 00 00 98 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.d
new file mode 100644
index 0000000..ace5b2c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_30.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_30
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_object/d/T_iput_object_30
+    const v1, 0
+    iput-object v1, v0, dot.junit.opcodes.iput_object.d.T_iput_object_30.st_i1 Ljava/lang/Object;
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.d
new file mode 100644
index 0000000..8906abe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_4.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_4
+.super java/lang/Object
+
+.field public  st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v3, v2, dot.junit.opcodes.iput_object.d.T_iput_object_4.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.d
new file mode 100644
index 0000000..5e9f811
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_6.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_6
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v3, v2, dot.junit.opcodes.iput_object.d.T_iput_object_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.d
new file mode 100644
index 0000000..25768ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_7.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_7
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_7.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.java
new file mode 100644
index 0000000..60bba2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.d
new file mode 100644
index 0000000..971dec4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_8.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_object/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_object/TestStubs/<init>()V
+
+       iput-object v2, v0, dot.junit.opcodes.iput_object.TestStubs.TestStubField Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.java
new file mode 100644
index 0000000..f104e78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.d
new file mode 100644
index 0000000..3fd712b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_object_9.java
+.class public dot.junit.opcodes.iput_object.d.T_iput_object_9
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-object v2, v2, dot.junit.opcodes.iput_object.d.T_iput_object_9noclass.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.java
new file mode 100644
index 0000000..7b53911
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_object/d/T_iput_object_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_object.d;
+
+public class T_iput_object_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/TestStubs.java
new file mode 100644
index 0000000..8cee31e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_short;
+
+public class TestStubs {
+    // used by testVFE9
+    protected short TestStubField = 77;
+    
+    // used by testE5
+    public final short TestStubFieldFinal = 77;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/Test_iput_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/Test_iput_short.java
new file mode 100644
index 0000000..0ea32e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/Test_iput_short.java
@@ -0,0 +1,332 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_short.d.T_iput_short_1;
+import dot.junit.opcodes.iput_short.d.T_iput_short_10;
+import dot.junit.opcodes.iput_short.d.T_iput_short_11;
+import dot.junit.opcodes.iput_short.d.T_iput_short_12;
+import dot.junit.opcodes.iput_short.d.T_iput_short_13;
+import dot.junit.opcodes.iput_short.d.T_iput_short_14;
+import dot.junit.opcodes.iput_short.d.T_iput_short_15;
+import dot.junit.opcodes.iput_short.d.T_iput_short_17;
+import dot.junit.opcodes.iput_short.d.T_iput_short_7;
+import dot.junit.opcodes.iput_short.d.T_iput_short_8;
+import dot.junit.opcodes.iput_short.d.T_iput_short_9;
+
+public class Test_iput_short extends DxTestCase {
+    /**
+     * @title put short into field
+     */
+    public void testN1() {
+        T_iput_short_1 t = new T_iput_short_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_iput_short_12 t = new T_iput_short_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_1
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_14
+        T_iput_short_14 t = new T_iput_short_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(77, t.getProtectedField());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_short_13 t = new T_iput_short_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title put short into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_short_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title put value '66000' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A11
+     * @title Attempt to set static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_short_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_short.TestStubs
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_8
+        try {
+            new T_iput_short_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_short_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_short_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_1
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_15
+        try {
+            new T_iput_short_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput-short shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-short shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-short shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-short shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-short shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-short shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_short.d.T_iput_short_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.iput_short.TestStubs
+        //@uses dot.junit.opcodes.iput_short.d.T_iput_short_11
+    	try {
+            new T_iput_short_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.d
new file mode 100644
index 0000000..8aca4729
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_1.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_1
+.super java/lang/Object
+
+.field public  st_i1 S
+.field protected  st_p1 S
+.field private  st_pvt1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public getPvtField()S
+.limit regs 2
+
+       iget-short v0, v1, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_pvt1 S
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.java
new file mode 100644
index 0000000..a804c96
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_1 {
+    public  short st_i1;
+    protected  short st_p1;
+    private  short st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public  short getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.d
new file mode 100644
index 0000000..7feaba8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_10.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_10
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_10.st_i1N S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.java
new file mode 100644
index 0000000..eb01ab1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.d
new file mode 100644
index 0000000..23539d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_11.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_short/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_short/TestStubs/<init>()V
+
+       const v1, 1
+       iput-short v1, v0, dot.junit.opcodes.iput_short.TestStubs.TestStubFieldFinal S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.java
new file mode 100644
index 0000000..dc23c74
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.d
new file mode 100644
index 0000000..b0f2f15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_12.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_12
+.super java/lang/Object
+
+.field public  final st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_12.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.java
new file mode 100644
index 0000000..eaacd89
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_12 {
+    public  short st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.d
new file mode 100644
index 0000000..4472907
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_13.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_13
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       const v0, 0
+       const v1, 77
+       iput-short v1, v0, dot.junit.opcodes.iput_short.d.T_iput_short_13.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.java
new file mode 100644
index 0000000..2ba3c63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_short.d;
+
+
+public class T_iput_short_13 {
+    
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.d
new file mode 100644
index 0000000..f7b07c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_14.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_14
+.super dot/junit/opcodes/iput_short/d/T_iput_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_short/d/T_iput_short_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()S
+.limit regs 2
+
+       iget-short v0, v1, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_p1 S
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_p1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.java
new file mode 100644
index 0000000..8a33e07
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_14 extends T_iput_short_1{
+    
+    public void run() {
+        st_p1 = 77;
+    }
+    
+    public  short getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.d
new file mode 100644
index 0000000..5732b91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_15.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_15
+.super dot/junit/opcodes/iput_short/d/T_iput_short_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_short/d/T_iput_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_1.st_pvt1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.java
new file mode 100644
index 0000000..17398b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.d
new file mode 100644
index 0000000..bd8966a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_17.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_17
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_17.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.java
new file mode 100644
index 0000000..b89d34b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.d
new file mode 100644
index 0000000..5d543c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_18.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_18
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.d
new file mode 100644
index 0000000..ae98945
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_2.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_2
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-short v0, v2, dot.junit.opcodes.iput_short.d.T_iput_short_4.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.d
new file mode 100644
index 0000000..b7524dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_20.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       iput-short v3, v3, dot.junit.opcodes.iput_short.d.T_iput_short_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.d
new file mode 100644
index 0000000..7b80f03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_21.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_21
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       iput-short v0, v3, dot.junit.opcodes.iput_short.d.T_iput_short_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.d
new file mode 100644
index 0000000..4f969d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_22.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-short v0, v3, dot.junit.opcodes.iput_short.d.T_iput_short_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.d
new file mode 100644
index 0000000..6f2cdc1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_23.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_23
+.super java/lang/Object
+
+.field public st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-short v0, v3, dot.junit.opcodes.iput_short.d.T_iput_short_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.d
new file mode 100644
index 0000000..326cd78
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_24.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       iput-short v0, v3, dot.junit.opcodes.iput_short.d.T_iput_short_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.d
new file mode 100644
index 0000000..0a091e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_3.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_3
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-short v0, v2, dot.junit.opcodes.iput_short.d.T_iput_short_3.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.dfh
new file mode 100644
index 0000000..f055d5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_3.dfh
@@ -0,0 +1,259 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_short/d/T_iput_short_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/iput_short/d/T_iput_short_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 69af47b5
+    B5 47 AF 69 
+// parsed: offset 12, len 20: signature           : 8879...c4a0
+    88 79 16 98 CF A1 69 7E 3C 6B E3 73 9E F7 E8 E4 22 93 C4 A0 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "Ljava/lang/Object;"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 365 (0x00016d) "S"
+    6D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 368 (0x000170) "T_iput_short_3.java"
+    70 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 397 (0x00018d) "st_i1"
+    8D 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "S"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  type_idx: 2 (0x000002) name_idx: 7 (0x000007) "st_i1"
+    00 00 02 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    00 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_short_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 404 (0x000194)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 94 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_short.d.T_iput_short_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_short.d.T_iput_short_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: iput-short v0, v2, Ldot/junit/opcodes/iput_short/d/T_iput_short_3;.st_i1:S // field@0000
+//@mod            5F 20 00 00 
+            5F 20 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 49: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 73 68 6F 72 74 2F 64 2F 54 5F 69 70 75 74 5F 73 68 6F 72 74 5F 33 3B 00 
+// parsed: offset 345, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 365, len 3: TYPE_STRING_DATA_ITEM [3] "S"
+    01 53 00 
+// parsed: offset 368, len 21: TYPE_STRING_DATA_ITEM [4] "T_iput_short_3.java"
+    13 54 5F 69 70 75 74 5F 73 68 6F 72 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 397, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_short/d/T_iput_short_3;"
+    // parsed: offset 404, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 405, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 406, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 407, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 408, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 409, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 410, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 411, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 414, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 417, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 418, len 2: code_off: 260 (0x000104)
+                84 02 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 20 00 00 01 00 00 00 94 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.d
new file mode 100644
index 0000000..51d2ea8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_30.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_30
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_short/d/T_iput_short_30
+    const v1, 0
+    iput-short v1, v0, dot.junit.opcodes.iput_short.d.T_iput_short_30.st_i1 S
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.d
new file mode 100644
index 0000000..f201a30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_4.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_4
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-short v3, v2, dot.junit.opcodes.iput_short.d.T_iput_short_4.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_6.d
new file mode 100644
index 0000000..ba79d41
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_6.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_6
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 66000
+       iput-short v0, v2, dot.junit.opcodes.iput_short.d.T_iput_short_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.d
new file mode 100644
index 0000000..b395108
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_7.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_7
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_7.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.java
new file mode 100644
index 0000000..6969f12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.d
new file mode 100644
index 0000000..05b5100
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_8.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       new-instance v0, Ldot/junit/opcodes/iput_short/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_short/TestStubs/<init>()V
+
+       const v1, 0
+       iput-short v1, v0, dot.junit.opcodes.iput_short.TestStubs.TestStubField S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.java
new file mode 100644
index 0000000..689c54b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.d
new file mode 100644
index 0000000..1a1555e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_short_9.java
+.class public dot.junit.opcodes.iput_short.d.T_iput_short_9
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       iput-short v1, v2, dot.junit.opcodes.iput_short.d.T_iput_short_9noclass.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.java
new file mode 100644
index 0000000..7f81b96
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_short/d/T_iput_short_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_short.d;
+
+public class T_iput_short_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/TestStubs.java
new file mode 100644
index 0000000..617b87f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_wide;
+
+public class TestStubs {
+    // used by testVFE9
+    protected long TestStubField = 0;
+    
+    // used by testE5
+    public final long TestStubFieldFinal = 0;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/Test_iput_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/Test_iput_wide.java
new file mode 100644
index 0000000..a61bb70
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/Test_iput_wide.java
@@ -0,0 +1,347 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_1;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_10;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_11;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_12;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_13;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_14;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_15;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_17;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_5;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_7;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_8;
+import dot.junit.opcodes.iput_wide.d.T_iput_wide_9;
+
+public class Test_iput_wide extends DxTestCase {
+    /**
+     * @title put long into field
+     */
+    public void testN1() {
+        T_iput_wide_1 t = new T_iput_wide_1();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(778899112233l, t.st_i1);
+    }
+
+    /**
+     * @title put double into field
+     */
+    public void testN2() {
+        T_iput_wide_5 t = new T_iput_wide_5();
+        assertEquals(0.0d, t.st_i1);
+        t.run();
+        assertEquals(0.5d, t.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN3() {
+        T_iput_wide_12 t = new T_iput_wide_12();
+        assertEquals(0, t.st_i1);
+        t.run();
+        assertEquals(77, t.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_1
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_14
+        T_iput_wide_14 t = new T_iput_wide_14();
+        assertEquals(0, t.getProtectedField());
+        t.run();
+        assertEquals(77, t.getProtectedField());
+    }
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE2() {
+        T_iput_wide_13 t = new T_iput_wide_13();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A11
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B14
+     * @title put int into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_iput_wide_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     *
+     * @constraint B14
+     * @title type of field doesn't match opcode - attempt to modify float
+     * field with double-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A11
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_iput_wide_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint B12
+     * @title Attempt to modify inaccessible protected field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.iput_wide.TestStubs
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_8
+        try {
+            new T_iput_wide_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_iput_wide_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_iput_wide_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_1
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_15
+        try {
+            new T_iput_wide_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title iput-wide shall not work for single-width numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-wide shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-wide shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-wide shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-wide shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-wide shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title iput-wide shall not work for short fields
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B6
+     * @title instance fields may only be accessed on already initialized instances.
+     */
+    public void testVFE30() {
+        try {
+            Class.forName("dot.junit.opcodes.iput_wide.d.T_iput_wide_30");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.iput_wide.TestStubs
+        //@uses dot.junit.opcodes.iput_wide.d.T_iput_wide_11
+        try {
+            new T_iput_wide_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.d
new file mode 100644
index 0000000..cae692f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_1.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_1
+.super java/lang/Object
+
+.field public  st_i1 J
+.field protected  st_p1 J
+.field private  st_pvt1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public  getPvtField()J
+.limit regs 3
+
+       iget-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_pvt1 J
+       return-wide v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 778899112233
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.java
new file mode 100644
index 0000000..be11462
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_1 {
+    public  long st_i1;
+    protected  long st_p1;
+    private  long st_pvt1;
+    
+    public void run() {
+        st_i1 = 778899112233l;
+    }
+    
+    public  long getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.d
new file mode 100644
index 0000000..1ba4cac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_10.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_10
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_10.st_i1N J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.java
new file mode 100644
index 0000000..9653b55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.d
new file mode 100644
index 0000000..d3401d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_11.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       new-instance v0, Ldot/junit/opcodes/iput_wide/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_wide/TestStubs/<init>()V
+       
+       const-wide v1, 1
+       iput-wide v1, v0, dot.junit.opcodes.iput_wide.TestStubs.TestStubFieldFinal J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.java
new file mode 100644
index 0000000..327d5bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.d
new file mode 100644
index 0000000..a386a54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_12.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_12
+.super java/lang/Object
+
+.field public  final st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 77
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_12.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.java
new file mode 100644
index 0000000..d2d6998
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_12 {
+    public  long st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.d
new file mode 100644
index 0000000..cdf7fe6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_13.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_13
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v2, 0
+       const-wide v0, 778899112233
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_13.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.java
new file mode 100644
index 0000000..6053aec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_13.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_wide.d;
+
+
+public class T_iput_wide_13 {
+    
+    public void run() {
+
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.d
new file mode 100644
index 0000000..22bafcf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_14.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_14
+.super dot/junit/opcodes/iput_wide/d/T_iput_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_wide/d/T_iput_wide_1/<init>()V
+       return-void
+.end method
+
+.method public  getProtectedField()J
+.limit regs 2
+
+       iget-wide v0, v1, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_p1 J
+       return-wide v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 77
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_p1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.java
new file mode 100644
index 0000000..f0fb8d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_14 extends T_iput_wide_1{
+    
+    public void run() {
+        st_p1 = 77;
+    }
+    
+    public  long getProtectedField(){
+        return st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.d
new file mode 100644
index 0000000..4e8b2ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_15.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_15
+.super dot/junit/opcodes/iput_wide/d/T_iput_wide_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/iput_wide/d/T_iput_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_1.st_pvt1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.java
new file mode 100644
index 0000000..9818c22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.d
new file mode 100644
index 0000000..058d1dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_17.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_17
+.super java/lang/Object
+
+.field public  st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_17.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.java
new file mode 100644
index 0000000..60c005e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.d
new file mode 100644
index 0000000..1818bed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_18.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_18
+.super java/lang/Object
+
+.field public  st_i1 F
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1.0
+       iput-wide v1, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_18.st_i1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.d
new file mode 100644
index 0000000..8d6dc36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_2.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_2
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_4.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.d
new file mode 100644
index 0000000..e0efb25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_20.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_20.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_20
+.super java/lang/Object
+
+.field public  st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const-wide v0, 0
+
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.d
new file mode 100644
index 0000000..064a9a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_21.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_21
+.super java/lang/Object
+
+.field public  st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 12    
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.d
new file mode 100644
index 0000000..80a827d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_22.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_22
+.super java/lang/Object
+
+.field public  st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.d
new file mode 100644
index 0000000..d37bbd0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_23.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_23
+.super java/lang/Object
+
+.field public  st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.d
new file mode 100644
index 0000000..3f0102f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_24.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_24
+.super java/lang/Object
+
+.field public  st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       iput-wide v0, v3, dot.junit.opcodes.iput_wide.d.T_iput_wide_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.d
new file mode 100644
index 0000000..fc4dc02
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_3.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_3
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_3.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dfh
new file mode 100644
index 0000000..a0ada5a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dex'...
+// Opened 'dot/junit/opcodes/iput_wide/d/T_iput_wide_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 71754517
+    17 45 75 71 
+// parsed: offset 12, len 20: signature           : e67a...82a9
+    E6 7A EF BD 44 34 8E F6 ED DF 42 B2 5F 27 17 2B 1D B9 82 A9 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "J"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 370 (0x000172) "T_iput_wide_3.java"
+    72 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 398 (0x00018e) "st_i1"
+    8E 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "J"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_iput_wide_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.iput_wide.d.T_iput_wide_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.iput_wide.d.T_iput_wide_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 276, len 10: |0000: const-wide v0, #double 0.000000 // #0x0000000000000001 long
+            18 00 01 00 00 00 00 00 00 00 
+        // parsed: offset 286, len 4: |0005: iput-wide v0, v2, Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;.st_i1:J // field@0000
+//@mod            5A 20 00 00 
+            5A 20 00 01 
+        // parsed: offset 290, len 2: |0007: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "J"
+    01 4A 00 
+// parsed: offset 303, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 69 70 75 74 5F 77 69 64 65 2F 64 2F 54 5F 69 70 75 74 5F 77 69 64 65 5F 33 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 20: TYPE_STRING_DATA_ITEM [4] "T_iput_wide_3.java"
+    12 54 5F 69 70 75 74 5F 77 69 64 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 398, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/iput_wide/d/T_iput_wide_3;"
+    // parsed: offset 405, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: instance_fields_size: 1
+        01 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+        // field [0]:
+            // parsed: offset 409, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 410, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 411, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 412, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 415, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 417, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 418, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 419, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 421, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 292 (0x000124)
+        02 20 00 00 08 00 00 00 24 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.d
new file mode 100644
index 0000000..9513dc8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_30.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_30.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_30
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+    new-instance v0, dot/junit/opcodes/iput_wide/d/T_iput_wide_30
+    const-wide v1, 0
+    iput-wide v1, v0, dot.junit.opcodes.iput_wide.d.T_iput_wide_30.st_i1 J
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.d
new file mode 100644
index 0000000..6036cc6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_4.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_4
+.super java/lang/Object
+
+.field public  st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       iput-wide v3, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_4.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.d
new file mode 100644
index 0000000..3c1d9ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_5.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_5
+.super java/lang/Object
+
+.field public  st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 0.5
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_5.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.java
new file mode 100644
index 0000000..a508e8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_5 {
+    public  double st_i1;
+    
+    public void run() {
+        st_i1 = 0.5d;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.d
new file mode 100644
index 0000000..31f4f12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_6.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_6
+.super java/lang/Object
+
+.field public  st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.d
new file mode 100644
index 0000000..df5079c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_7.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_7
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 0
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_7.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.java
new file mode 100644
index 0000000..e476c01
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.d
new file mode 100644
index 0000000..12a0d92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_8.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+       new-instance v0, Ldot/junit/opcodes/iput_wide/TestStubs;
+       invoke-direct {v0}, dot/junit/opcodes/iput_wide/TestStubs/<init>()V
+       
+       const-wide v1, 0
+       iput-wide v1, v0, dot.junit.opcodes.iput_wide.TestStubs.TestStubField J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.java
new file mode 100644
index 0000000..dc2e2bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.d
new file mode 100644
index 0000000..aecd210
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_iput_wide_9.java
+.class public dot.junit.opcodes.iput_wide.d.T_iput_wide_9
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 0
+       iput-wide v0, v2, dot.junit.opcodes.iput_wide.d.T_iput_wide_9noclass.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.java
new file mode 100644
index 0000000..c9d1da2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/iput_wide/d/T_iput_wide_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.iput_wide.d;
+
+public class T_iput_wide_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/Test_long_to_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/Test_long_to_double.java
new file mode 100644
index 0000000..fb55b8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/Test_long_to_double.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.long_to_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.long_to_double.d.T_long_to_double_1;
+import dot.junit.opcodes.long_to_double.d.T_long_to_double_6;
+
+public class Test_long_to_double extends DxTestCase {
+    /**
+     * @title Argument = 50000000000
+     */
+    public void testN1() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(5.0E10d, t.run(50000000000l), 0d);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(1d, t.run(1l), 0d);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(-1d, t.run(-1l), 0d);
+    }
+
+    /**
+     * @title Type of argument - double. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of double to double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_long_to_double_6 t = new T_long_to_double_6();
+        try {
+            t.run(12345);
+        } catch (Throwable e) {
+        }
+    }       
+    
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(9.223372036854776E18d, t.run(Long.MAX_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(-9.223372036854776E18, t.run(Long.MIN_VALUE), 0d);
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_long_to_double_1 t = new T_long_to_double_1();
+        assertEquals(0d, t.run(0), 0d);
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_double.d.T_long_to_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - integer
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_double.d.T_long_to_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_double.d.T_long_to_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_double.d.T_long_to_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.d
new file mode 100644
index 0000000..d1e068c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_double_1.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.java
new file mode 100644
index 0000000..f1ce414
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.long_to_double.d;
+
+public class T_long_to_double_1 {
+
+    public double run(long a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.d
new file mode 100644
index 0000000..3201a77
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_double_2.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       const v6, 3.1415
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.d
new file mode 100644
index 0000000..83c423c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_double_3.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       const v6, 1234
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.d
new file mode 100644
index 0000000..03bc7bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_double_4.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       long-to-double v0, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.d
new file mode 100644
index 0000000..6656834
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_double_5.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       long-to-double v0, v8
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.d
new file mode 100644
index 0000000..8e430fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_double_6.java
+.class public dot.junit.opcodes.long_to_double.d.T_long_to_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.limit regs 8
+
+       long-to-double v0, v6
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.java
new file mode 100644
index 0000000..f676c16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_double/d/T_long_to_double_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.long_to_double.d;
+
+public class T_long_to_double_6 {
+
+    public double run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/Test_long_to_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/Test_long_to_float.java
new file mode 100644
index 0000000..1e06437
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/Test_long_to_float.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.long_to_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.long_to_float.d.T_long_to_float_1;
+import dot.junit.opcodes.long_to_float.d.T_long_to_float_2;
+
+public class Test_long_to_float extends DxTestCase {
+    /**
+     * @title Argument = 123456789012345
+     */
+    public void testN1() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(1.23456788E14f, t.run(123456789012345l), 0f);
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(1f, t.run(1l), 0f);
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(-1f, t.run(-1l), 0f);
+    }
+
+    /**
+     * @title Type of argument - double. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of double to double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_long_to_float_2 t = new T_long_to_float_2();
+        try {
+            t.run(12345);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(9.223372036854776E18, t.run(Long.MAX_VALUE), 0f);
+    }
+
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(-9.223372036854776E18, t.run(Long.MIN_VALUE), 0f);
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_long_to_float_1 t = new T_long_to_float_1();
+        assertEquals(0f, t.run(0l), 0f);
+    }
+
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - integer
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_float.d.T_long_to_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_float.d.T_long_to_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_float.d.T_long_to_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.d
new file mode 100644
index 0000000..3f0602b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_float_1.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       long-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.java
new file mode 100644
index 0000000..67eca97
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.long_to_float.d;
+
+public class T_long_to_float_1 {
+
+    public float run(long a) {
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.d
new file mode 100644
index 0000000..0f4a557
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_float_2.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 8
+
+       long-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.java
new file mode 100644
index 0000000..409d2ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.long_to_float.d;
+
+public class T_long_to_float_2 {
+
+    public float run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.d
new file mode 100644
index 0000000..002e5d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_float_3.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       const v6, 1234
+       long-to-float v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.d
new file mode 100644
index 0000000..acb99d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_float_4.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       long-to-float v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.d
new file mode 100644
index 0000000..5cb993e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_float/d/T_long_to_float_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_float_5.java
+.class public dot.junit.opcodes.long_to_float.d.T_long_to_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 8
+
+       long-to-float v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/Test_long_to_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/Test_long_to_int.java
new file mode 100644
index 0000000..2440fa5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/Test_long_to_int.java
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.long_to_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.long_to_int.d.T_long_to_int_1;
+import dot.junit.opcodes.long_to_int.d.T_long_to_int_2;
+
+public class Test_long_to_int extends DxTestCase {
+    /**
+     * @title Argument = 0xAAAAFFEEDDCCl
+     */
+    public void testN1() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(0xFFEEDDCC, t.run(0xAAAAFFEEDDCCl));
+    }
+
+    /**
+     * @title Argument = -123456789
+     */
+    public void testN2() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(-123456789, t.run(-123456789l));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN3() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(1, t.run(1l));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN4() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(-1, t.run(-1l));
+    }
+    
+    /**
+     * @title Type of argument - double. Dalvik doens't distinguish 64-bits types internally,
+     * so this conversion of double to int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_long_to_int_2 t = new T_long_to_int_2();
+        try {
+            t.run(12345);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(-1, t.run(Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(0, t.run(Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_long_to_int_1 t = new T_long_to_int_1();
+        assertEquals(0, t.run(0l));
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title  type of argument - float
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_int.d.T_long_to_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_int.d.T_long_to_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_int.d.T_long_to_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of argument - int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.long_to_int.d.T_long_to_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.d
new file mode 100644
index 0000000..2f73956
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_int_1.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       long-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.java
new file mode 100644
index 0000000..77f6c5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.long_to_int.d;
+
+public class T_long_to_int_1 {
+
+    public int run(long a) {
+        return (int) a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.d
new file mode 100644
index 0000000..1732d7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_int_2.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       long-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.java
new file mode 100644
index 0000000..97b9ac4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.long_to_int.d;
+
+public class T_long_to_int_2 {
+
+    public int run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.d
new file mode 100644
index 0000000..1d4665b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_int_3.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       const v6, 1234.0
+       long-to-int v0, v6
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.d
new file mode 100644
index 0000000..50e5889
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_int_4.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       long-to-int v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.d
new file mode 100644
index 0000000..5b65864
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_int_5.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       long-to-int v0, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.d
new file mode 100644
index 0000000..ad412f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/long_to_int/d/T_long_to_int_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_long_to_int_6.java
+.class public dot.junit.opcodes.long_to_int.d.T_long_to_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 8
+       move v0, v7
+       move v1, v7
+       long-to-int v0, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/Test_monitor_enter.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/Test_monitor_enter.java
new file mode 100644
index 0000000..3608793
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/Test_monitor_enter.java
@@ -0,0 +1,179 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.monitor_enter;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1;
+import dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2;
+import dot.junit.opcodes.monitor_enter.d.T_monitor_enter_3;
+
+public class Test_monitor_enter extends DxTestCase {
+
+    /**
+     * @title tests monitor-enter functionality
+     * 
+     * @throws InterruptedException
+     */
+    public void testN1() throws InterruptedException {
+        //@uses dot.junit.opcodes.monitor_enter.TestRunnable
+        final T_monitor_enter_1 t1 = new T_monitor_enter_1();
+        Runnable r1 = new TestRunnable(t1);
+        Runnable r2 = new TestRunnable(t1);
+        Thread tr1 = new Thread(r1);
+        Thread tr2 = new Thread(r2);
+        tr1.start();
+        tr2.start();
+
+        tr1.join();
+        tr2.join();
+        assertEquals(2, t1.counter);
+    }
+
+    /**
+     * @title Tests behavior when monitor owned by current thread.
+     * 
+     * @throws InterruptedException
+     */
+    public void testN2() throws InterruptedException {
+        //@uses dot.junit.opcodes.monitor_enter.TestRunnable2
+        final T_monitor_enter_2 t1 = new T_monitor_enter_2();
+        Runnable r1 = new TestRunnable2(t1, 10);
+        Runnable r2 = new TestRunnable2(t1, 20);
+        Thread tr1 = new Thread(r1);
+        Thread tr2 = new Thread(r2);
+        tr1.start();
+        tr2.start();
+
+        tr1.join();
+        tr2.join();
+        assertTrue(t1.result);
+    }
+
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE1() {
+        T_monitor_enter_3 t = new T_monitor_enter_3();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_enter.d.T_monitor_enter_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
+
+class TestRunnable implements Runnable {
+    private T_monitor_enter_1 t1;
+    TestRunnable(T_monitor_enter_1 t1) {
+        this.t1 = t1;
+    }
+    
+    public void run() {
+        try {
+            t1.run();
+        } catch (InterruptedException e) {
+            throw new RuntimeException("interrupted!");
+        }
+    }
+}
+
+class TestRunnable2 implements Runnable {
+    private T_monitor_enter_2 t2;
+    private int val;
+    TestRunnable2(T_monitor_enter_2 t2, int val) {
+        this.t2 = t2;
+        this.val = val;
+    }
+    
+    public void run() {
+        try {
+            t2.run(val);
+        } catch (InterruptedException e) {
+            throw new RuntimeException("interrupted!");
+        }
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.d
new file mode 100644
index 0000000..eb443b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.d
@@ -0,0 +1,63 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_enter_1.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1
+.super java/lang/Object
+
+.field public counter I
+
+.method public <init>()V
+.limit regs 2
+
+       invoke-direct {v1}, java/lang/Object/<init>()V
+
+       const/4 v0, 0
+
+       iput v0, v1, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       return-void
+.end method
+
+.method public run()V
+.limit regs 8
+       monitor-enter v7
+Label8:
+       iget v1, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+
+       const-wide/16 v3, 500
+       invoke-static {v3, v4}, java/lang/Thread/sleep(J)V
+       
+       iget v2, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       
+       if-ne v1, v2, Label0
+       
+       add-int/lit8 v1, v1, 1
+       iput v1, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       monitor-exit v7
+Label24:
+       return-void
+Label0:
+       const/4 v5, -1
+       iput v5, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       monitor-exit v7
+       return-void
+       
+Label25:
+       move-exception v3
+       monitor-exit v7
+       const/4 v5, -1
+       iput v5, v7, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_1.counter I
+       throw v3
+.catch all from Label8 to Label24 using Label25
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.java
new file mode 100644
index 0000000..39113fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_1.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.monitor_enter.d;
+
+public class T_monitor_enter_1 {
+    public int counter = 0;
+    
+    public void run() throws InterruptedException  {
+        synchronized(this) {
+            int a = counter;
+            Thread.sleep(500);
+            counter = ++a;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.d
new file mode 100644
index 0000000..2e7fc6f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.d
@@ -0,0 +1,85 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_enter_2.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2
+.super java/lang/Object
+
+.field private flg I
+.field public result Z
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const/4 v2, 0
+       iput v2, v3, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.flg I
+
+       const/4 v2, 1
+       iput-boolean v2, v3, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.result Z
+       return-void
+.end method
+
+.method public run(I)V
+.limit regs 10
+
+       monitor-enter v8
+Label13:
+       monitor-enter v8
+Label14:
+
+       iput v9, v8, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.flg I
+       
+Label16:
+       monitor-exit v8
+Label20:
+
+       const-wide/16 v4, 500
+
+Label22:
+       invoke-static {v4, v5}, java/lang/Thread/sleep(J)V
+Label23:
+
+       iget v1, v8, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.flg I
+
+       if-eq v1, v9, Label35
+
+       const/4 v5, 0
+       iput-boolean v5, v8, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.result Z
+       
+Label35:
+       monitor-exit v8
+Label37:
+       return-void
+       
+       
+Label46:
+       move-exception v4
+
+       const/4 v6, 0
+       iput-boolean v6, v8, dot.junit.opcodes.monitor_enter.d.T_monitor_enter_2.result Z
+
+       monitor-exit v8
+Label53:
+       throw v4
+       
+.catch all from Label13 to Label14 using Label46
+.catch all from Label16 to Label20 using Label46
+.catch all from Label22 to Label23 using Label46
+.catch all from Label35 to Label37 using Label46
+.catch all from Label46 to Label53 using Label46
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.java
new file mode 100644
index 0000000..d2f5add
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_2.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.monitor_enter.d;
+
+public class T_monitor_enter_2 {
+
+     private int flg = 0;
+     public boolean result = true;
+        
+     public void run(int v) throws InterruptedException  {
+         synchronized(this) {
+             synchronized(this) {
+                 flg = v;
+             }
+             Thread.sleep(500);
+             if(flg != v) {
+                 result = false;
+             }
+         }
+     }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d
new file mode 100644
index 0000000..7417a8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_enter_3.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const/4 v5, 0
+       monitor-enter v5
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.java
new file mode 100644
index 0000000..ebb0f17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_3.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.monitor_enter.d;
+
+public class T_monitor_enter_3 {
+
+    public void run() {
+        Object o = null;
+        synchronized(o) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.d
new file mode 100644
index 0000000..5b3469d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_enter_4.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       monitor-enter v6
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.java
new file mode 100644
index 0000000..83c41d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_4.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.monitor_enter.d;
+
+public class T_monitor_enter_4 {
+
+    public void run() {
+        Object o = null;
+        synchronized(o) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.d
new file mode 100644
index 0000000..7078aa0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_enter_5.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v5, 12345
+       monitor-enter v5
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.d
new file mode 100644
index 0000000..754a9e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_enter_6.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v5, 1.23
+       monitor-enter v5
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.d
new file mode 100644
index 0000000..8fb7791
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_enter_7.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const-wide v4, 123456789321
+       monitor-enter v4
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.d
new file mode 100644
index 0000000..3d45716
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_enter/d/T_monitor_enter_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_enter_8.java
+.class public dot.junit.opcodes.monitor_enter.d.T_monitor_enter_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const-wide v4, 1.79
+       monitor-enter v4
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/Test_monitor_exit.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/Test_monitor_exit.java
new file mode 100644
index 0000000..d4f5842
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/Test_monitor_exit.java
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.monitor_exit;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.monitor_exit.d.T_monitor_exit_1;
+import dot.junit.opcodes.monitor_exit.d.T_monitor_exit_3;
+
+public class Test_monitor_exit extends DxTestCase {
+
+    /**
+     * @title thread is not monitor owner
+     */
+    public void testE1() throws InterruptedException {
+        //@uses dot.junit.opcodes.monitor_exit.TestRunnable
+        final T_monitor_exit_1 t = new T_monitor_exit_1();
+        final Object o = new Object();
+
+        Runnable r = new TestRunnable(t, o);
+        synchronized (o) {
+            Thread th = new Thread(r);
+            th.start();
+            th.join();
+        }
+        if (t.result == false) {
+            fail("expected IllegalMonitorStateException");
+        }
+    }
+
+
+    /**
+     * @title expected NullPointerException
+     */
+    public void testE3() {
+        T_monitor_exit_3 t = new T_monitor_exit_3();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title  type of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of arguments - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of arguments - long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of arguments - double
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.monitor_exit.d.T_monitor_exit_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
+
+
+class TestRunnable implements Runnable {
+    private T_monitor_exit_1 t;
+    private Object o;
+
+    public TestRunnable(T_monitor_exit_1 t, Object o) {
+        this.t = t;
+        this.o = o;
+    }
+
+    public void run() {
+        try {
+            t.run(o);
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+            t.result = true;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d
new file mode 100644
index 0000000..bef8390
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_exit_1.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_1
+.super java/lang/Object
+
+.field public result Z
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const/4 v2, 1
+       iput-boolean v2, v3, dot.junit.opcodes.monitor_exit.d.T_monitor_exit_1.result Z
+
+       return-void
+.end method
+
+.method public run(Ljava/lang/Object;)V
+.limit regs 5
+
+       monitor-exit v3
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.java
new file mode 100644
index 0000000..ff61a53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.monitor_exit.d;
+
+public class T_monitor_exit_1 {
+
+    public boolean result = false;
+    
+    public void run(Object o) {
+        synchronized(o) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.d
new file mode 100644
index 0000000..9ef4034
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_exit_3.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+
+       const/4 v1, 0
+Label4:
+       monitor-exit v1
+Label5:
+       return-void
+Label6:
+       move-exception v1
+       monitor-exit v3
+       throw v1
+.catch all from Label4 to Label5 using Label6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.java
new file mode 100644
index 0000000..162dd58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.monitor_exit.d;
+
+public class T_monitor_exit_3 {
+
+    public void run() {
+        synchronized(this) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.d
new file mode 100644
index 0000000..334f385
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_exit_4.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       monitor-exit v4
+
+       return-void       
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.d
new file mode 100644
index 0000000..9def3d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_exit_5.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       const v3, 12345
+       monitor-exit v3
+       return-void       
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.d
new file mode 100644
index 0000000..9635212
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_exit_6.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       const v3, 1.123
+       monitor-exit v3
+       return-void       
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.d
new file mode 100644
index 0000000..c65ae56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_exit_7.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       const-wide v0, 123456789321
+       monitor-exit v0
+       return-void       
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.d
new file mode 100644
index 0000000..91be219
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/monitor_exit/d/T_monitor_exit_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_monitor_exit_8.java
+.class public dot.junit.opcodes.monitor_exit.d.T_monitor_exit_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       monitor-enter v3
+       const-wide v0, 1.79
+       monitor-exit v0
+       return-void       
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/Test_move.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move/Test_move.java
new file mode 100644
index 0000000..d503890
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/Test_move.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move.d.T_move_1;
+
+public class Test_move extends DxTestCase {
+    /**
+     * @title test move functionality
+     */
+    public void testN1() {
+        assertTrue(T_move_1.run());
+    }
+
+
+    /**
+     * @constraint A23 
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move.d.T_move_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.d
new file mode 100644
index 0000000..1d8e693
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_move_1.java
+.class public dot.junit.opcodes.move.d.T_move_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 16
+       const v0, 1234
+       const v15, 567989
+
+       move v0, v15
+       
+       const v4, 567989
+
+       if-ne v0, v4, Label0
+       if-ne v15, v4, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.java
new file mode 100644
index 0000000..97f538f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move.d;
+
+public class T_move_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_2.d
new file mode 100644
index 0000000..4a5dfc73
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_move_2.java
+.class public dot.junit.opcodes.move.d.T_move_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+
+       move v0, v9
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_3.d
new file mode 100644
index 0000000..c9d094b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_3.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_move_3.java
+.class public dot.junit.opcodes.move.d.T_move_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+       const v0, 0
+
+       move v15, v0
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_4.d
new file mode 100644
index 0000000..54adf05
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_4.java
+.class public dot.junit.opcodes.move.d.T_move_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       move v1, v8
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_5.d
new file mode 100644
index 0000000..1ab33b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_5.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_move_5.java
+.class public dot.junit.opcodes.move.d.T_move_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+       const-wide v0, 124
+
+       move v5, v0
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_6.d
new file mode 100644
index 0000000..91da915
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_move_6.java
+.class public dot.junit.opcodes.move.d.T_move_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+       const-wide v0, 124
+
+       move v5, v1
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_7.d
new file mode 100644
index 0000000..fa615c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move/d/T_move_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_move_7.java
+.class public dot.junit.opcodes.move.d.T_move_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 9
+       const-wide v0, 124
+       const v5, 0
+
+       move v1, v5
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/Test_move_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/Test_move_16.java
new file mode 100644
index 0000000..f3e2ab0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/Test_move_16.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_16.d.T_move_16_1;
+import dot.junit.opcodes.move_16.d.T_move_16_2;
+
+public class Test_move_16 extends DxTestCase {
+    /**
+     * @title v4001 -> v4000
+     */
+    public void testN1() {
+        assertTrue(T_move_16_1.run());
+    }
+    
+    /**
+     * @title v1 -> v4001
+     */
+    public void testN2() {
+        assertTrue(T_move_16_2.run());
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_16.d.T_move_16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.d
new file mode 100644
index 0000000..bb5335f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source T_move_16_1.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const v0, 123
+       const v1, 5678
+       
+       move/16 v4000, v0
+       move/16 v4001, v1
+       
+       move/16 v4000, v4001
+       
+       const/4 v4, 5678
+       
+       move/16 v0, v4000
+       move/16 v1, v4001
+
+       if-ne v0, v4, Label0
+       if-ne v1, v4, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.java
new file mode 100644
index 0000000..203468b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_16.d;
+
+public class T_move_16_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.d
new file mode 100644
index 0000000..52454ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_move_16_2.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const v1, 5678
+       
+       move/16 v4001, v1
+       move/16 v0, v4001
+       
+       const/4 v4, 5678
+
+       if-ne v0, v4, Label0
+       if-ne v1, v4, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.java
new file mode 100644
index 0000000..4729303
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_16.d;
+
+public class T_move_16_2 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_3.d
new file mode 100644
index 0000000..604cbf3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_move_16_3.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       move/16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_4.d
new file mode 100644
index 0000000..2c098a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_16_4.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const v0, 0
+       move/16 v5000, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_5.d
new file mode 100644
index 0000000..ccacc33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_move_16_5.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move/16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_6.d
new file mode 100644
index 0000000..eb4b9c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_16_6.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const-wide v123, 123
+       move/16 v255, v123
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_7.d
new file mode 100644
index 0000000..a6aa1d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_16_7.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v123, 123
+       move/16 v255, v124
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_8.d
new file mode 100644
index 0000000..8d98954
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_16/d/T_move_16_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_move_16_8.java
+.class public dot.junit.opcodes.move_16.d.T_move_16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       const v0, 0
+       move/16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/Test_move_exception.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/Test_move_exception.java
new file mode 100644
index 0000000..b4fd87c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/Test_move_exception.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_exception;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_exception.d.T_move_exception_1;
+import dot.junit.opcodes.move_exception.d.T_move_exception_2;
+
+public class Test_move_exception extends DxTestCase {
+    
+    /**
+     * @title tests move-exception functionality
+     */
+    public void testN1() {
+        T_move_exception_1 t = new T_move_exception_1();
+        try {
+            t.run();
+            fail("ArithmeticException was not thrown");
+        } catch (ArithmeticException ae) {
+            //expected
+        } catch (Exception ex) {
+            fail("Exception " + ex + " was thrown instead off ArithmeticException");
+        }
+    }
+    
+    /**
+     * @title tests move-exception functionality
+     */
+    public void testN2() {
+        T_move_exception_2 t = new T_move_exception_2();
+        assertTrue(t.run());
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_exception.d.T_move_exception_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B21 
+     * @title  move-exception is not first instruction in an exception handler
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_exception.d.T_move_exception_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }    
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.d
new file mode 100644
index 0000000..ed7aa2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_move_exception_1.java
+.class public dot.junit.opcodes.move_exception.d.T_move_exception_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+Label1:
+       const v1, 15
+       const v2, 0
+       div-int v0, v1, v2 
+       
+Label2:
+       goto Label4
+
+Label3:
+       move-exception v3
+       throw v3
+
+Label4:
+       return-void
+
+.catch all from Label1 to Label2 using Label3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.java
new file mode 100644
index 0000000..9edf6ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_exception.d;
+
+public class T_move_exception_1 {
+    
+    public void run() {
+        try{
+            int a = 15/0;
+        } catch(Exception ex) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.d
new file mode 100644
index 0000000..8713f3a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 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.
+
+.source T_move_exception_2.java
+.class public dot.junit.opcodes.move_exception.d.T_move_exception_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 6
+
+Label1:
+       const v1, 1
+       const v2, 0
+       div-int v0, v1, v2 
+       
+Label2:
+       goto Label4
+
+Label3:
+       move-exception v3
+       const v4, 1
+       return v4
+
+Label4:
+       const v4, 0
+       return v4
+
+.catch java/lang/RuntimeException from Label1 to Label2 using Label3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.java
new file mode 100644
index 0000000..ed66c22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_2.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_exception.d;
+
+public class T_move_exception_2 {
+    
+    public boolean run() {
+        try {
+            int a = 15/0;
+        } catch (ArithmeticException ae) {
+            return true;
+        }
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.d
new file mode 100644
index 0000000..8141ddb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_3.d
@@ -0,0 +1,31 @@
+.source T_move_exception_3.java
+.class public dot.junit.opcodes.move_exception.d.T_move_exception_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+Label1:
+       const v1, 1
+       const v2, 0
+       div-int v0, v1, v2 
+       
+Label2:
+       goto Label4
+
+Label3:
+       move-exception v6
+
+Label4:
+       return-void
+
+.catch all from Label1 to Label2 using Label3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.d
new file mode 100644
index 0000000..fdad390
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_exception/d/T_move_exception_5.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_move_exception_5.java
+.class public dot.junit.opcodes.move_exception.d.T_move_exception_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+Label1:
+       const v1, 15
+       const v2, 0
+       div-int v0, v1, v2 
+       
+Label2:
+       goto Label4
+
+Label3:
+       nop
+       move-exception v3
+       throw v3
+
+Label4:
+       return-void
+
+.catch all from Label1 to Label2 using Label3
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/Test_move_from16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/Test_move_from16.java
new file mode 100644
index 0000000..725cbd86e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/Test_move_from16.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_from16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_from16.d.T_move_from16_1;
+
+public class Test_move_from16 extends DxTestCase {
+    /**
+     * @title v4001 -> v255 -> v1
+     */
+    public void testN1() {
+        assertTrue(T_move_from16_1.run());
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_from16.d.T_move_from16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.d
new file mode 100644
index 0000000..e445cea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 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.
+
+.source T_move_from16_1.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const v10, 5678
+   
+       move/16 v4001, v10
+       
+       move/from16 v255, v4001
+       move/from16 v1, v255
+       
+       const/4 v4, 5678
+       
+       if-ne v1, v4, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.java
new file mode 100644
index 0000000..a32e85c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_from16.d;
+
+public class T_move_from16_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.d
new file mode 100644
index 0000000..88b3cae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_move_from16_3.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       move/from16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.d
new file mode 100644
index 0000000..e544a14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_from16_4.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5
+       const v1, 0    
+       move/from16 v5, v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.d
new file mode 100644
index 0000000..400a01f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_move_from16_5.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move/from16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.d
new file mode 100644
index 0000000..662e314
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_from16_6.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const-wide v4500, 123
+       move/from16 v0, v4500
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.d
new file mode 100644
index 0000000..7d2f26c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_from16_7.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v1234, 123
+       move/from16 v255, v1235
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.d
new file mode 100644
index 0000000..5f8455a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_from16/d/T_move_from16_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_move_from16_8.java
+.class public dot.junit.opcodes.move_from16.d.T_move_from16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       const v0, 0
+       move/from16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/Test_move_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/Test_move_object.java
new file mode 100644
index 0000000..d67be88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/Test_move_object.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_object.d.T_move_object_1;
+
+public class Test_move_object extends DxTestCase {
+    /**
+     * @title tests move-object functionality
+     */
+    public void testN1() {
+        T_move_object_1 t = new T_move_object_1(); 
+        assertEquals(t.run(), t);
+    }
+
+
+    /**
+     * @constraint A23 
+     * @title  number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object.d.T_move_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.d
new file mode 100644
index 0000000..cc90a5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_1.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 16
+
+       move-object v0, v15
+       
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.java
new file mode 100644
index 0000000..c0b2483
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_object.d;
+
+public class T_move_object_1 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_2.d
new file mode 100644
index 0000000..4df3976
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_2.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+
+.method public run()V
+.limit regs 9
+
+       move-object v15, v8
+
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_3.d
new file mode 100644
index 0000000..647a220
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_3.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+
+       move-object v1, v15
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_4.d
new file mode 100644
index 0000000..f5538f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_4.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       const v0, 1
+       move-object v1, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_5.d
new file mode 100644
index 0000000..d7951a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_5.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       const-wide v0, 124
+
+       move-object v5, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_6.d
new file mode 100644
index 0000000..7db5136
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_6.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       const-wide v0, 124
+
+       move-object v5, v1
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_7.d
new file mode 100644
index 0000000..0fe5509
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object/d/T_move_object_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_7.java
+.class public dot.junit.opcodes.move_object.d.T_move_object_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 9
+       const-wide v0, 124
+
+       move-object v1, v8
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/Test_move_object_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/Test_move_object_16.java
new file mode 100644
index 0000000..c3780cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/Test_move_object_16.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_object_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_object_16.d.T_move_object_16_1;
+
+public class Test_move_object_16 extends DxTestCase {
+    /**
+     * @title v4999 -> v4000 -> v1
+     */
+    public void testN1() {
+        T_move_object_16_1 t = new T_move_object_16_1(); 
+        assertEquals(t.run(), t);
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_16.d.T_move_object_16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.d
new file mode 100644
index 0000000..b60a448
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_16_1.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5000
+       move-object/16 v4000, v4999
+       move-object/16 v1, v4000
+
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.java
new file mode 100644
index 0000000..d0b85bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_object_16.d;
+
+public class T_move_object_16_1 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.d
new file mode 100644
index 0000000..aad9893
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_16_3.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move-object/16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.d
new file mode 100644
index 0000000..463646c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_16_4.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+       move-object/16 v6, v4
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.d
new file mode 100644
index 0000000..8cceaff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_16_5.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       const v0, 1234    
+       move-object/16 v2000, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.d
new file mode 100644
index 0000000..6a5035d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_16_6.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       const-wide v123, 123
+       move-object/16 v255, v123
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.d
new file mode 100644
index 0000000..0fce2b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_16_7.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+
+       const-wide v123, 123
+       move-object/16 v255, v124
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.d
new file mode 100644
index 0000000..8f0d925
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_16/d/T_move_object_16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_16_8.java
+.class public dot.junit.opcodes.move_object_16.d.T_move_object_16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       move-object/16 v124, v4999
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/Test_move_object_from16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/Test_move_object_from16.java
new file mode 100644
index 0000000..2fe17d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/Test_move_object_from16.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_object_from16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_object_from16.d.T_move_object_from16_1;
+
+
+public class Test_move_object_from16 extends DxTestCase {
+    /**
+     * @title v4999 -> v255 -> v1
+     */
+    public void testN1() {
+        T_move_object_from16_1 t = new T_move_object_from16_1(); 
+        assertEquals(t.run(), t);
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains integer
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains wide
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_object_from16.d.T_move_object_from16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.d
new file mode 100644
index 0000000..434737e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_from16_1.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5000
+       move-object/from16 v255, v4999
+       move-object/from16 v1, v255
+       
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.java
new file mode 100644
index 0000000..75f4bac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_object_from16.d;
+
+public class T_move_object_from16_1 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.d
new file mode 100644
index 0000000..c2f4512
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_from16_3.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move/from16 v0, v5000
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.d
new file mode 100644
index 0000000..360ae14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_from16_4.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       move-object/from16 v5, v4
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.d
new file mode 100644
index 0000000..94acfb9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_from16_5.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       const v1, 1234
+       move-object/from16 v0, v1
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.d
new file mode 100644
index 0000000..d41f1f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_from16_6.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const-wide v4500, 123
+       move-object/from16 v0, v4500
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.d
new file mode 100644
index 0000000..09abc65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_from16_7.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v1234, 123
+       move-object/from16 v255, v1235
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.d
new file mode 100644
index 0000000..93ff685
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_object_from16/d/T_move_object_from16_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_object_from16_8.java
+.class public dot.junit.opcodes.move_object_from16.d.T_move_object_from16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       move-object/from16 v124, v4999
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/Test_move_result.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/Test_move_result.java
new file mode 100644
index 0000000..9a0eaba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/Test_move_result.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_result;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_result.d.T_move_result_1;
+
+public class Test_move_result extends DxTestCase {
+    /**
+     * @title tests move-result functionality
+     */
+    public void testN1() {
+        assertTrue(T_move_result_1.run());
+    }
+
+
+    /**
+     * @constraint A23 
+     * @title number of registers - dest is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title  reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title wide
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B19 
+     * @title  move-result instruction must be immediately preceded 
+     * (in the insns array) by an <invoke-kind> instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B20 
+     * @title move-result instruction must be immediately preceded 
+     * (in actual control flow) by an <invoke-kind> instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result.d.T_move_result_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.d
new file mode 100644
index 0000000..50c2eb2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.d
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_1.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_1/foo()I
+
+    move-result v0
+    const v1, 12345
+    
+    if-eq v0, v1 Label1
+    
+    const v0, 0
+    return v0
+    
+Label1:
+    const v0, 1
+    return v0
+
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.java
new file mode 100644
index 0000000..0f97613
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_result.d;
+
+public class T_move_result_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_2.d
new file mode 100644
index 0000000..ad1b45c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_2.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_2.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_2/foo()I
+    move-result v16
+    
+    return-void
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_3.d
new file mode 100644
index 0000000..481f158
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_3.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result/d/T_move_result_3/foo()Ljava/lang/Object;
+    move-result v0
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_4.d
new file mode 100644
index 0000000..655aa7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_4.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_4.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result/d/T_move_result_4/foo()J
+    move-result v0
+    
+    return-void
+.end method
+
+.method private foo()J
+.limit regs 2
+
+    const-wide v0, 1234
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_5.d
new file mode 100644
index 0000000..711b142
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_5.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_5.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 16
+
+    const-wide v0, 123
+
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_5/foo()I
+    move-result v1
+    
+    return-wide v0
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_6.d
new file mode 100644
index 0000000..9afeb48
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_6.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_6.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_6/foo()I
+    nop
+    move-result v1
+    
+    return-void
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_7.d
new file mode 100644
index 0000000..aaea908
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_7.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_7.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    goto Label1
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_7/foo()I
+Label1:
+    move-result v1
+    
+    return-void
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_8.d
new file mode 100644
index 0000000..da32cd0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result/d/T_move_result_8.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_8.java
+.class public dot.junit.opcodes.move_result.d.T_move_result_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-static {} dot/junit/opcodes/move_result/d/T_move_result_8/foo()I
+
+    move-result v16
+    return-void
+
+.end method
+
+.method private static foo()I
+.limit regs 1
+
+     const v0, 12345
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/Test_move_result_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/Test_move_result_object.java
new file mode 100644
index 0000000..9ee2ed1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/Test_move_result_object.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_result_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_result_object.d.T_move_result_object_1;
+import dot.junit.opcodes.move_result_object.d.T_move_result_object_8;
+
+public class Test_move_result_object extends DxTestCase {
+    /**
+     * @title tests move-result-object functionality
+     */
+    public void testN1() {
+        T_move_result_object_1 t = new T_move_result_object_1();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title filled-new-array result
+     */
+    public void testN2() {
+        T_move_result_object_8 t = new T_move_result_object_8();
+        int[] arr = t.run();
+        if(arr.length != 2 || arr[0] != 1 || arr[1] != 2)
+            fail("wrong array size or content");
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers - dest is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title integer
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title wide
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B19 
+     * @title  move-result-object instruction must be immediately preceded 
+     * (in the insns array) by an <invoke-kind> instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B20
+     * @title move-result-object instruction must be immediately preceded 
+     * (in actual control flow) by an <invoke-kind> instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_object.d.T_move_result_object_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.d
new file mode 100644
index 0000000..433b86f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_1.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_1/foo()Ljava/lang/Object;
+
+    move-result-object v0
+    
+    if-eq v0, v15, Label1
+
+    const v0, 0
+    return v0
+    
+Label1:
+    const v0, 1
+    return v0
+
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.java
new file mode 100644
index 0000000..76cdb0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_result_object.d;
+
+public class T_move_result_object_1 {
+
+    public boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.d
new file mode 100644
index 0000000..22c1b0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_object_2.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_2/foo()Ljava/lang/Object;
+    move-result-object v16
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.d
new file mode 100644
index 0000000..a788844
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_object_3.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_3/foo()I
+    move-result-object v0
+    
+    return-void
+.end method
+
+.method private foo()I
+.limit regs 1
+     const v0, 1
+     return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.d
new file mode 100644
index 0000000..b3229b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_4.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_object_4.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_4/foo()J
+    move-result-object v0
+    
+    return-void
+.end method
+
+.method private foo()J
+.limit regs 2
+
+    const-wide v0, 1234
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.d
new file mode 100644
index 0000000..6216f18
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_5.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_object_5.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 16
+
+    const-wide v0, 123
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_5/foo()Ljava/lang/Object;
+    move-result-object v1
+    
+    return-wide v0
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.d
new file mode 100644
index 0000000..8de3274
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_6.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_object_6.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_6/foo()Ljava/lang/Object;
+    nop
+    move-result-object v1
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.d
new file mode 100644
index 0000000..088b386
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_7.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_object_7.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    goto Label1
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_7/foo()Ljava/lang/Object;
+Label1:
+    move-result-object v1
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.d
new file mode 100644
index 0000000..0cbb044
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_8.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()[I
+.limit regs 16
+    const v1, 1
+    const v2, 2
+    filled-new-array {v1, v2}, [I
+    move-result-object v5
+    
+    return-object v5
+
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.java
new file mode 100644
index 0000000..3eb0ea1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_8.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_result_object.d;
+
+public class T_move_result_object_8 {
+
+    public int[] run() {
+        int arr[] = new int[2];
+        arr[0] = 1;
+        arr[1] = 2;
+        return arr;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.d
new file mode 100644
index 0000000..92600b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_object/d/T_move_result_object_9.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_9.java
+.class public dot.junit.opcodes.move_result_object.d.T_move_result_object_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+    
+    invoke-direct {v15} dot/junit/opcodes/move_result_object/d/T_move_result_object_9/foo()Ljava/lang/Object;
+
+    move-result-object v16
+    return-void
+
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/Test_move_result_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/Test_move_result_wide.java
new file mode 100644
index 0000000..6c849dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/Test_move_result_wide.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_result_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_result_wide.d.T_move_result_wide_1;
+
+public class Test_move_result_wide extends DxTestCase {
+    /**
+     * @title tests move-result-wide functionality
+     */
+    public void testN1() {
+        assertTrue(T_move_result_wide_1.run());
+    }
+
+
+    /**
+     * @constraint A23 
+     * @title  number of registers - dest is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1 
+     * @title reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  32-bit value
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B19 
+     * @title move-result-wide instruction must be immediately preceded 
+     * (in the insns array) by an <invoke-kind> instruction
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B20 
+     * @title move-result-wide instruction must be immediately preceded 
+     * (in actual control flow) by an <invoke-kind> instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.move_result_wide.d.T_move_result_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.d
new file mode 100644
index 0000000..e0d80c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.d
@@ -0,0 +1,56 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_wide_1.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1/foo()J
+
+    move-result-wide v0
+    const-wide v2, 12345
+    
+    cmp-long v5, v0, v2
+    if-eqz v5, Label1
+    
+    const v0, 0
+    return v0
+    
+Label1:
+    const v0, 1
+    return v0
+
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.java
new file mode 100644
index 0000000..4c7ef16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_result_wide.d;
+
+public class T_move_result_wide_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.d
new file mode 100644
index 0000000..35eb63c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_wide_2.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_2/foo()J
+    move-result-wide v16
+    
+    return-void
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.d
new file mode 100644
index 0000000..5f53fa3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_wide_3.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_3/foo()Ljava/lang/Object;
+    move-result-wide v0
+    
+    return-void
+.end method
+
+.method private foo()Ljava/lang/Object;
+.limit regs 1
+
+     return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.d
new file mode 100644
index 0000000..3c10cab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_wide_4.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 16
+
+    invoke-direct {v15} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_4/foo()I
+    move-result-wide v0
+    
+    return-void
+.end method
+
+.method private foo()I
+.limit regs 2
+
+    const v0, 1234
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.d
new file mode 100644
index 0000000..9126ee2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_wide_5.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 16
+
+    const-wide v0, 123
+
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_5/foo()J
+    move-result-wide v1
+    
+    return-wide v0
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.d
new file mode 100644
index 0000000..a499958
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_wide_6.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_6/foo()J
+    nop
+    move-result-wide v1
+    
+    return-void
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.d
new file mode 100644
index 0000000..f6d47eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_wide_7.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    goto Label1
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_7/foo()J
+Label1:
+    move-result-wide v1
+    
+    return-void
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.d
new file mode 100644
index 0000000..f385a2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_move_result_wide_8.java
+.class public dot.junit.opcodes.move_result_wide.d.T_move_result_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 16
+
+    const v0, 0
+    
+    invoke-static {} dot/junit/opcodes/move_result_wide/d/T_move_result_wide_8/foo()J
+
+    move-result-wide v16
+    return-void
+
+.end method
+
+.method private static foo()J
+.limit regs 2
+
+     const-wide v0, 12345
+     return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/Test_move_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/Test_move_wide.java
new file mode 100644
index 0000000..4ab7421
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/Test_move_wide.java
@@ -0,0 +1,107 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_wide.d.T_move_wide_1;
+import dot.junit.opcodes.move_wide.d.T_move_wide_6;
+
+public class Test_move_wide extends DxTestCase {
+    /**
+     * @title tests move-wide functionality
+     */
+    public void testN1() {
+        assertTrue(T_move_wide_1.run());
+    }
+
+    
+    /**
+     * @title v0 -> v1
+     */
+    public void testN2() {
+        assertEquals(T_move_wide_6.run(), 0);
+    }
+
+    /**
+     * @constraint A24
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  src register contains 32-bit value
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide.d.T_move_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.d
new file mode 100644
index 0000000..b0597f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_1.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 16
+       const-wide v0, 1234
+       const-wide v14, 567989
+
+       move-wide v0, v14
+       
+       const-wide v4, 567989
+
+       cmp-long v10, v0, v4
+       if-nez v10, Label0
+       cmp-long v10, v14, v4
+       if-nez v10, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.java
new file mode 100644
index 0000000..8ddde82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_wide.d;
+
+public class T_move_wide_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.d
new file mode 100644
index 0000000..22e992b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_2.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 9
+
+       move-wide v0, v9
+
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.d
new file mode 100644
index 0000000..b8e3db0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_3.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 9
+       const-wide v0, 0
+
+       move v9, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.d
new file mode 100644
index 0000000..3eb95df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_4.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 9
+       move-wide v1, v8
+
+       const v1, 0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.d
new file mode 100644
index 0000000..92e67dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_5.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 9
+       const v0, 124
+
+       move-wide v5, v0
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.d
new file mode 100644
index 0000000..4fecf88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_6.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 9
+       const-wide v0, 1233746384323
+
+       move-wide v1, v0
+       
+       const-wide v4, 1233746384323
+       cmp-long v8, v1, v4
+       
+       return v8
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.java
new file mode 100644
index 0000000..bd5de04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_wide.d;
+
+public class T_move_wide_6 {
+
+    public static int run() {
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.d
new file mode 100644
index 0000000..9324fef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide/d/T_move_wide_7.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_7.java
+.class public dot.junit.opcodes.move_wide.d.T_move_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 9
+       const-wide v0, 124
+       const-wide v5, 0
+
+       move-wide v1, v5
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/Test_move_wide_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/Test_move_wide_16.java
new file mode 100644
index 0000000..a2b776d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/Test_move_wide_16.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_wide_16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_wide_16.d.T_move_wide_16_1;
+import dot.junit.opcodes.move_wide_16.d.T_move_wide_16_9;
+
+public class Test_move_wide_16 extends DxTestCase {
+    /**
+     * @title v4001 -> v4000
+     */
+    public void testN1() {
+        assertTrue(T_move_wide_16_1.run());
+    }
+    
+    /**
+     * @title v1 -> v4001
+     */
+    public void testN2() {
+        assertTrue(T_move_wide_16_1.run());
+    }
+    
+    /**
+     * @title v1 -> v2
+     */
+    public void testN3() {
+        assertEquals(T_move_wide_16_9.run(), 0);
+    }
+
+    /**
+     * @constraint A24
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains 32-bit value
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_16.d.T_move_wide_16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.d
new file mode 100644
index 0000000..282edb4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.d
@@ -0,0 +1,55 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_16_1.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const-wide v0, 123
+       const-wide v2, 5678
+       
+       move-wide/16 v4000, v0
+       move-wide/16 v4002, v2
+       
+       move-wide/16 v4000, v4002
+       
+       const-wide v4, 5678
+       
+       move-wide/16 v0, v4000
+       move-wide/16 v2, v4002
+
+       cmp-long v10, v0, v4
+       if-nez v10, Label0
+       cmp-long v10, v2, v4
+       if-nez v10, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.java
new file mode 100644
index 0000000..66b4da1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_wide_16.d;
+
+public class T_move_wide_16_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.d
new file mode 100644
index 0000000..57c7c93
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_16_2.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const-wide/16 v2, 5678
+       
+       move-wide/16 v4001, v2
+       move-wide/16 v0, v4001
+       
+       const-wide v4, 5678
+
+       cmp-long v10, v2, v4
+       if-nez v10, Label0
+       cmp-long v10, v0, v4
+       if-nez v10, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.java
new file mode 100644
index 0000000..e5f4966
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_wide_16.d;
+
+public class T_move_wide_16_2 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.d
new file mode 100644
index 0000000..e1e0ac7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_16_3.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       move-wide/16 v0, v5000
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.d
new file mode 100644
index 0000000..3f12810
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_16_4.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const-wide v0, 0
+       move-wide/16 v5000, v0
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.d
new file mode 100644
index 0000000..7e61df4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_16_5.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move-wide/16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.d
new file mode 100644
index 0000000..2cea620
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_16_6.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const v123, 123
+       move-wide/16 v255, v123
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.d
new file mode 100644
index 0000000..7826131
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_16_7.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v123, 123
+       move-wide/16 v255, v124
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.d
new file mode 100644
index 0000000..c5e006d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_16_8.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       const-wide v0, 0
+       move-wide/16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.d
new file mode 100644
index 0000000..aa8cdce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_16_9.java
+.class public dot.junit.opcodes.move_wide_16.d.T_move_wide_16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 5000
+       const-wide v1, 1233746384323
+       move-wide/16 v2, v1
+
+       const-wide v10, 1233746384323
+       cmp-long v4, v2, v10
+
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.java
new file mode 100644
index 0000000..f66146b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_16/d/T_move_wide_16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_wide_16.d;
+
+public class T_move_wide_16_9 {
+
+    public static int run() {
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/Test_move_wide_from16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/Test_move_wide_from16.java
new file mode 100644
index 0000000..2434e92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/Test_move_wide_from16.java
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_wide_from16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_1;
+import dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_2;
+
+public class Test_move_wide_from16 extends DxTestCase {
+    /**
+     * @title v4001 -> v255 -> v1
+     */
+    public void testN1() {
+        assertTrue(T_move_wide_from16_1.run());
+    }
+    
+    /**
+     * @title v100 -> 101
+     */
+    public void testN2() {
+        assertEquals(T_move_wide_from16_2.run(), 0);
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers - src is not valid
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers - dst is not valid
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title src register contains reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register contains 32-bit value
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title src register is a part of reg pair
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B18 
+     * @title When writing to a register that is one half of a 
+     * register pair, but not touching the other half, the old register pair gets broken 
+     * up, and the other register involved in it becomes undefined.
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.d
new file mode 100644
index 0000000..21aaca8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_from16_1.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       const-wide v10, 5678233453
+   
+       move-wide/16 v4001, v10
+       
+       move-wide/from16 v255, v4001
+       move-wide/from16 v1, v255
+       
+       const-wide v4, 5678233453
+       
+       cmp-long v0, v1, v4
+       if-nez v0, Label0
+       
+       const v1, 1
+       return v1
+
+Label0:
+       const v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.java
new file mode 100644
index 0000000..8dfcd57
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_wide_from16.d;
+
+public class T_move_wide_from16_1 {
+
+    public static boolean run() {
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.d
new file mode 100644
index 0000000..d2e6700
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.d
@@ -0,0 +1,39 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_from16_2.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 5000
+       const-wide v100, 5678233453
+       move-wide/from16 v101, v100
+       
+       const-wide v4, 5678233453
+       
+       cmp-long v0, v101, v4
+
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.java
new file mode 100644
index 0000000..b3207316
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.move_wide_from16.d;
+
+public class T_move_wide_from16_2 {
+
+    public static int run() {
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.d
new file mode 100644
index 0000000..8f95101
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_from16_3.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5000
+       move-wide/from16 v0, v5000
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.d
new file mode 100644
index 0000000..e5f282a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_from16_4.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()Z
+.limit regs 5
+       const v1, 0    
+       move-wide/from16 v5, v1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.d
new file mode 100644
index 0000000..21ec075
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_from16_5.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5000
+       move-wide/from16 v0, v4999
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.d
new file mode 100644
index 0000000..784e31a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_from16_6.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+       const v4500, 123
+       move-wide/from16 v0, v4500
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.d
new file mode 100644
index 0000000..1790fe5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_from16_7.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()V
+.limit regs 5000
+
+       const-wide v1234, 123
+       move-wide/from16 v255, v1235
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.d
new file mode 100644
index 0000000..80d80e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/move_wide_from16/d/T_move_wide_from16_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_move_wide_from16_8.java
+.class public dot.junit.opcodes.move_wide_from16.d.T_move_wide_from16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()J
+.limit regs 5000
+
+       const-wide v123, 123
+       const-wide v0, 0
+       move-wide/from16 v124, v0
+       return-wide v123
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/Test_mul_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/Test_mul_double.java
new file mode 100644
index 0000000..9a63412
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/Test_mul_double.java
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_double.d.T_mul_double_1;
+import dot.junit.opcodes.mul_double.d.T_mul_double_4;
+
+public class Test_mul_double extends DxTestCase {
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+
+    public void testN1() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(8.478000000000002d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(-0d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, -3.14d
+     */
+    public void testN3() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(8.478000000000002d, t.run(-3.14d, -2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_double_4 t = new T_mul_double_4();
+        try {
+            t.run(500000l, 2.7d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(-0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(+0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB7() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_mul_double_1 t = new T_mul_double_1();
+        assertEquals(-0d, t.run(Double.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double.d.T_mul_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double.d.T_mul_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double.d.T_mul_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.d
new file mode 100644
index 0000000..8f7a9a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_double_1.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.java
new file mode 100644
index 0000000..a70f250
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_double.d;
+
+public class T_mul_double_1 {
+
+    public double run(double a, double b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.d
new file mode 100644
index 0000000..99dd815
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_double_2.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double v0, v10, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.d
new file mode 100644
index 0000000..54a26c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_double_3.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.limit regs 14
+
+       mul-double v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.d
new file mode 100644
index 0000000..54df7a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_double_4.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 14
+
+       mul-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.java
new file mode 100644
index 0000000..a707538
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_double.d;
+
+public class T_mul_double_4 {
+
+    public double run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.d
new file mode 100644
index 0000000..d3d6ec3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double/d/T_mul_double_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_double_5.java
+.class public dot.junit.opcodes.mul_double.d.T_mul_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/Test_mul_double_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/Test_mul_double_2addr.java
new file mode 100644
index 0000000..2637e18
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/Test_mul_double_2addr.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_1;
+import dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_4;
+
+public class Test_mul_double_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+
+    public void testN1() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(8.478000000000002d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(-0d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, -3.14d
+     */
+    public void testN3() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(8.478000000000002d, t.run(-3.14d, -2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_double_2addr_4 t = new T_mul_double_2addr_4();
+        try {
+            t.run(500000l, 2.7d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(-0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(+0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB7() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.MAX_VALUE,
+                Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_mul_double_2addr_1 t = new T_mul_double_2addr_1();
+        assertEquals(-0d, t.run(Double.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.d
new file mode 100644
index 0000000..373a854
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_double_2addr_1.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.java
new file mode 100644
index 0000000..f5bdb4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_double_2addr.d;
+
+public class T_mul_double_2addr_1 {
+
+    public double run(double a, double b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.d
new file mode 100644
index 0000000..05485d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_double_2addr_2.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double/2addr v10, v14
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.d
new file mode 100644
index 0000000..d981779
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_double_2addr_3.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.limit regs 14
+
+       mul-double/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.d
new file mode 100644
index 0000000..1654300
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_double_2addr_4.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 14
+
+       mul-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.java
new file mode 100644
index 0000000..8a17e15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_double_2addr.d;
+
+public class T_mul_double_2addr_4 {
+
+    public double run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.d
new file mode 100644
index 0000000..ef36f48
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_double_2addr/d/T_mul_double_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_double_2addr_5.java
+.class public dot.junit.opcodes.mul_double_2addr.d.T_mul_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       mul-double/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/Test_mul_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/Test_mul_float.java
new file mode 100644
index 0000000..6359122
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/Test_mul_float.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_float.d.T_mul_float_1;
+import dot.junit.opcodes.mul_float.d.T_mul_float_6;
+
+public class Test_mul_float extends DxTestCase {
+    
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(8.478001f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(-0f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, -3.14f
+     */
+    public void testN3() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(8.478001f, t.run(-3.14f, -2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_float_6 t = new T_mul_float_6();
+        try {
+            t.run(3.12f, 13);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(-0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(+0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB7() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_mul_float_1 t = new T_mul_float_1();
+        assertEquals(-0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float.d.T_mul_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float.d.T_mul_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float.d.T_mul_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float.d.T_mul_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.d
new file mode 100644
index 0000000..8be7048
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_float_1.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.java
new file mode 100644
index 0000000..4010691
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_float.d;
+
+public class T_mul_float_1 {
+
+    public float run(float a, float b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.d
new file mode 100644
index 0000000..26475994
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_float_2.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.d
new file mode 100644
index 0000000..13a31f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_float_3.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.limit regs 8
+
+       mul-float v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.d
new file mode 100644
index 0000000..a92ef8f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_float_4.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.limit regs 8
+
+       mul-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.d
new file mode 100644
index 0000000..9f99d59
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_5.d
@@ -0,0 +1,18 @@
+.source T_mul_float_5.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.d
new file mode 100644
index 0000000..7b3b61a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.d
@@ -0,0 +1,18 @@
+.source T_mul_float_6.java
+.class public dot.junit.opcodes.mul_float.d.T_mul_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.limit regs 8
+
+       mul-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.java
new file mode 100644
index 0000000..abccc0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float/d/T_mul_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_float.d;
+
+public class T_mul_float_6 {
+
+    public float run(float a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/Test_mul_float_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/Test_mul_float_2addr.java
new file mode 100644
index 0000000..0686a9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/Test_mul_float_2addr.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_1;
+import dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_6;
+
+public class Test_mul_float_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(8.478001f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(-0f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, -3.14f
+     */
+    public void testN3() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(8.478001f, t.run(-3.14f, -2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_float_2addr_6 t = new T_mul_float_2addr_6();
+        try {
+            t.run(3.12f, 13);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, 0
+     */
+    public void testB2() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, 0));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(-0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(+0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB7() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB8() {
+        T_mul_float_2addr_1 t = new T_mul_float_2addr_1();
+        assertEquals(-0f, t.run(Float.MIN_VALUE, -1.4E-45f));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.d
new file mode 100644
index 0000000..05faaba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_mul_float_2addr_1.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.java
new file mode 100644
index 0000000..1f6b6479
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_float_2addr.d;
+
+public class T_mul_float_2addr_1 {
+
+    public float run(float a, float b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.d
new file mode 100644
index 0000000..11fef7b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_float_2addr_2.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.d
new file mode 100644
index 0000000..9d83fef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_float_2addr_3.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.limit regs 8
+
+       mul-float/2addr v5, v6
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.d
new file mode 100644
index 0000000..eebb510
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_float_2addr_4.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.limit regs 8
+
+       mul-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.d
new file mode 100644
index 0000000..03a888b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_mul_float_2addr_5.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       mul-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.d
new file mode 100644
index 0000000..67cccbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_mul_float_2addr_6.java
+.class public dot.junit.opcodes.mul_float_2addr.d.T_mul_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.limit regs 8
+
+       mul-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.java
new file mode 100644
index 0000000..f580894
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_float_2addr/d/T_mul_float_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_float_2addr.d;
+
+public class T_mul_float_2addr_6 {
+
+    public float run(float a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/Test_mul_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/Test_mul_int.java
new file mode 100644
index 0000000..f9252c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/Test_mul_int.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_int.d.T_mul_int_1;
+import dot.junit.opcodes.mul_int.d.T_mul_int_6;
+
+public class Test_mul_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(32, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = -2, 255
+     */
+    public void testN2() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(-510, t.run(-2, 255));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN3() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(-4, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = 4, 0x80000001
+     */
+    public void testN4() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(4, t.run(4, 0x80000001));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_mul_int_6 t = new T_mul_int_6();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(0, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE,
+                Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_mul_int_1 t = new T_mul_int_1();
+        assertEquals(0, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int.d.T_mul_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int.d.T_mul_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int.d.T_mul_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int.d.T_mul_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.d
new file mode 100644
index 0000000..3b4a63f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_1.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 9
+
+       mul-int v0, v7, v8
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.java
new file mode 100644
index 0000000..4ac3bea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int.d;
+
+public class T_mul_int_1 {
+
+    public int run(int a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.d
new file mode 100644
index 0000000..ed71fa1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_2.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       mul-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.d
new file mode 100644
index 0000000..059f7b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_3.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 9
+
+       mul-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.d
new file mode 100644
index 0000000..67c0e37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_4.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 9
+
+       mul-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.d
new file mode 100644
index 0000000..04be572
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_5.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 9
+
+       mul-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.d
new file mode 100644
index 0000000..e181e71
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_6.java
+.class public dot.junit.opcodes.mul_int.d.T_mul_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 9
+
+       mul-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.java
new file mode 100644
index 0000000..a4e6a07
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int/d/T_mul_int_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int.d;
+
+public class T_mul_int_6 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/Test_mul_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/Test_mul_int_2addr.java
new file mode 100644
index 0000000..010896c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/Test_mul_int_2addr.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_1;
+import dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_6;
+
+public class Test_mul_int_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(32, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = -2, 255
+     */
+    public void testN2() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(-510, t.run(-2, 255));
+    }
+
+    /**
+     * @title Arguments = 0x7ffffffe, 2
+     */
+    public void testN3() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(-4, t.run(0x7ffffffe, 2));
+    }
+
+    /**
+     * @title Arguments = 4, 0x80000001
+     */
+    public void testN4() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(4, t.run(4, 0x80000001));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_mul_int_2addr_6 t = new T_mul_int_2addr_6();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(0, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE,
+                Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_mul_int_2addr_1 t = new T_mul_int_2addr_1();
+        assertEquals(0, t.run(0, 0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.d
new file mode 100644
index 0000000..86a6c9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_2addr_1.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       mul-int/2addr v6, v7
+       return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.java
new file mode 100644
index 0000000..b4878b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_2addr.d;
+
+public class T_mul_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.d
new file mode 100644
index 0000000..744c214
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_2addr_2.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       mul-int/2addr v7, v8
+       return v7
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.d
new file mode 100644
index 0000000..8c14a36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_2addr_3.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       mul-int/2addr v5, v6
+       return v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.d
new file mode 100644
index 0000000..64e0ba1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_2addr_4.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       mul-int/2addr v5, v7
+       return v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.d
new file mode 100644
index 0000000..9a22395
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_2addr_5.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       mul-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.d
new file mode 100644
index 0000000..c8bbcd2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_2addr_6.java
+.class public dot.junit.opcodes.mul_int_2addr.d.T_mul_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 8
+
+       mul-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.java
new file mode 100644
index 0000000..71f6655
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_2addr/d/T_mul_int_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_2addr.d;
+
+public class T_mul_int_2addr_6 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/Test_mul_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/Test_mul_int_lit16.java
new file mode 100644
index 0000000..d77dd0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/Test_mul_int_lit16.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_1;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_2;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_3;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_4;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_5;
+import dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_6;
+
+public class Test_mul_int_lit16 extends DxTestCase {
+
+    /**
+     * @title Arguments = 205, 130
+     */
+    public void testN1() {
+        T_mul_int_lit16_1 t = new T_mul_int_lit16_1();
+        assertEquals(26650, t.run(205));
+    }
+
+    /**
+     * @title Arguments = -180, 130
+     */
+    public void testN2() {
+        T_mul_int_lit16_1 t = new T_mul_int_lit16_1();
+        assertEquals(-23400, t.run(-180));
+    }
+
+    /**
+     * @title Arguments = 0xfa, 130
+     */
+    public void testN3() {
+        T_mul_int_lit16_1 t = new T_mul_int_lit16_1();
+        assertEquals(0x7ef4, t.run(0xfa));
+    }
+
+    /**
+     * @title Arguments = -101, -321
+     */
+    public void testN4() {
+        T_mul_int_lit16_2 t = new T_mul_int_lit16_2();
+        assertEquals(32421, t.run(-101));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_mul_int_lit16_3 t = new T_mul_int_lit16_3();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, 0 
+     */
+    public void testB1() {
+        T_mul_int_lit16_4 t = new T_mul_int_lit16_4();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Arguments = 0, Short.MAX_VALUE
+     */
+    public void testB2() {
+        T_mul_int_lit16_4 t = new T_mul_int_lit16_4();
+        assertEquals(0, t.run(Short.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Short.MAX_VALUE
+     */
+    public void testB3() {
+        T_mul_int_lit16_5 t = new T_mul_int_lit16_5();
+        assertEquals(Short.MAX_VALUE, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 1, Short.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_int_lit16_5 t = new T_mul_int_lit16_5();
+        assertEquals(Short.MIN_VALUE, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 32767, Short.MIN_VALUE
+     */
+    public void testB5() {
+        T_mul_int_lit16_6 t = new T_mul_int_lit16_6();
+        assertEquals(-1073709056, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int * double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference * int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.d
new file mode 100644
index 0000000..d7dd6f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit16_1.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 130
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.java
new file mode 100644
index 0000000..e4b1503
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_1 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.d
new file mode 100644
index 0000000..91c550c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit16_10.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v7, 4321
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.java
new file mode 100644
index 0000000..54d82de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_10 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.d
new file mode 100644
index 0000000..200afbe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit16_2.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, -321
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.java
new file mode 100644
index 0000000..33fab36
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_2 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.d
new file mode 100644
index 0000000..aed3dd4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit16_3.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 130
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.java
new file mode 100644
index 0000000..959ac8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_3 {
+    
+    public int run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.d
new file mode 100644
index 0000000..532ce52
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit16_4.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.java
new file mode 100644
index 0000000..e4abf30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_4 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.d
new file mode 100644
index 0000000..0d4d3ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit16_5.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.java
new file mode 100644
index 0000000..4ca4f63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_5 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.d
new file mode 100644
index 0000000..a719ab3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit16_6.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v8, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.java
new file mode 100644
index 0000000..d926570
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_6 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.d
new file mode 100644
index 0000000..511de2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit16_7.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit16 v0, v9, 3276
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.java
new file mode 100644
index 0000000..a891dd9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_7 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.d
new file mode 100644
index 0000000..288f649
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit16_8.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 9
+
+       mul-int/lit16 v0, v7, 4321
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.java
new file mode 100644
index 0000000..d639850
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_8 {
+    
+    public int run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.d
new file mode 100644
index 0000000..e8d0737
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit16_9.java
+.class public dot.junit.opcodes.mul_int_lit16.d.T_mul_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 9
+
+       mul-int/lit16 v0, v7, 4321
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.java
new file mode 100644
index 0000000..b7f8085
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit16/d/T_mul_int_lit16_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit16.d;
+
+public class T_mul_int_lit16_9 {
+    
+    public int run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/Test_mul_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/Test_mul_int_lit8.java
new file mode 100644
index 0000000..e2dae07
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/Test_mul_int_lit8.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_1;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_2;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_3;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_4;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_5;
+import dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_6;
+
+public class Test_mul_int_lit8 extends DxTestCase {
+    
+    /**
+     * @title Arguments =  10, 55
+     */
+    public void testN1() {
+        T_mul_int_lit8_1 t = new T_mul_int_lit8_1();
+        assertEquals(550, t.run(55));
+    }
+
+    /**
+     * @title Arguments = 10, -25 
+     */
+    public void testN2() {
+        T_mul_int_lit8_1 t = new T_mul_int_lit8_1();
+        assertEquals(-250, t.run(-25));
+    }
+
+    /**
+     * @title Arguments = -15, -23
+     */
+    public void testN3() {
+        T_mul_int_lit8_2 t = new T_mul_int_lit8_2();
+        assertEquals(345, t.run(-23));
+    }
+    
+    /**
+     * @title Arguments = 0x7ffffffe, 10
+     */
+    public void testN4() {
+        T_mul_int_lit8_1 t = new T_mul_int_lit8_1();
+        assertEquals(-20, t.run(0x7ffffffe));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_mul_int_lit8_3 t = new T_mul_int_lit8_3();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB1() {
+        T_mul_int_lit8_4 t = new T_mul_int_lit8_4();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Arguments = 0, Byte.MAX_VALUE
+     */
+    public void testB2() {
+        T_mul_int_lit8_4 t = new T_mul_int_lit8_4();
+        assertEquals(0, t.run(Byte.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Byte.MAX_VALUE
+     */
+    public void testB3() {
+        T_mul_int_lit8_5 t = new T_mul_int_lit8_5();
+        assertEquals(Byte.MAX_VALUE, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title Arguments = 1, Short.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_int_lit8_5 t = new T_mul_int_lit8_5();
+        assertEquals(Short.MIN_VALUE, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 127, Short.MIN_VALUE
+     */
+    public void testB5() {
+        T_mul_int_lit8_6 t = new T_mul_int_lit8_6();
+        assertEquals(-4161536, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int * double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long * int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title types of arguments - reference * int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.d
new file mode 100644
index 0000000..8aebfd4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit8_1.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.java
new file mode 100644
index 0000000..dd87288
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_1 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.d
new file mode 100644
index 0000000..716726e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit8_10.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v7, 111
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.java
new file mode 100644
index 0000000..a50d3d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_10 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.d
new file mode 100644
index 0000000..c4d9174
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit8_2.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, -15
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.java
new file mode 100644
index 0000000..97e30cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_2 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.d
new file mode 100644
index 0000000..fc70d45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit8_3.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.java
new file mode 100644
index 0000000..dc7352a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_3 {
+    
+    public int run(float a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.d
new file mode 100644
index 0000000..a9cf5e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit8_4.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.java
new file mode 100644
index 0000000..4e395c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_4 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.d
new file mode 100644
index 0000000..1e08af2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit8_5.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.java
new file mode 100644
index 0000000..1b7c65f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_5 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.d
new file mode 100644
index 0000000..bfcfcc2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit8_6.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v8, 127
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.java
new file mode 100644
index 0000000..6a723c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_6 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.d
new file mode 100644
index 0000000..fe88ffb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit8_7.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 9
+
+       mul-int/lit8 v0, v9, 12
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.java
new file mode 100644
index 0000000..34f5fde
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_7 {
+    
+    public int run(int a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.d
new file mode 100644
index 0000000..fc6ec8a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit8_8.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 9
+
+       mul-int/lit8 v0, v7, 123
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.java
new file mode 100644
index 0000000..8fb46ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_8 {
+    
+    public int run(double a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.d
new file mode 100644
index 0000000..943b9ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_int_lit8_9.java
+.class public dot.junit.opcodes.mul_int_lit8.d.T_mul_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 9
+
+       mul-int/lit8 v0, v7, 123
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.java
new file mode 100644
index 0000000..c7ebd3d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_int_lit8/d/T_mul_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_int_lit8.d;
+
+public class T_mul_int_lit8_9 {
+    
+    public int run(long a) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/Test_mul_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/Test_mul_long.java
new file mode 100644
index 0000000..1abf57e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/Test_mul_long.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_long.d.T_mul_long_1;
+import dot.junit.opcodes.mul_long.d.T_mul_long_3;
+
+public class Test_mul_long extends DxTestCase {
+    
+    /**
+     * @title Arguments = 222000000000l, 5000000000l
+     */
+    public void testN1() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(3195355577426903040l, t.run(222000000000l, 5000000000l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 123456789l
+     */
+    public void testN2() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-15241578750190521l, t.run(-123456789l, 123456789l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, -123456789l
+     */
+    public void testN3() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(15241578750190521l, t.run(-123456789l, -123456789l));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_long_3 t = new T_mul_long_3();
+        try {
+            t.run(500000l, 2.7d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(0, t.run(0, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, Long.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE,
+                Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1
+     */
+    public void testB6() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-9223372036854775807L, t.run(Long.MAX_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB7() {
+        T_mul_long_1 t = new T_mul_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long.d.T_mul_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long * int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long.d.T_mul_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float * long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long.d.T_mul_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference * long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long.d.T_mul_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.d
new file mode 100644
index 0000000..de4736d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_long_1.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.java
new file mode 100644
index 0000000..5cb0074
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_long.d;
+
+public class T_mul_long_1 {
+
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.d
new file mode 100644
index 0000000..4e0d25c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_long_2.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long v0, v12, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.d
new file mode 100644
index 0000000..f2faf7d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_long_3.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       mul-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.java
new file mode 100644
index 0000000..ab7743f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_long.d;
+
+public class T_mul_long_3 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.d
new file mode 100644
index 0000000..bd62f75
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_long_4.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 14
+
+       mul-long v0, v11, v13
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.d
new file mode 100644
index 0000000..3d1d09e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_long_5.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.limit regs 14
+
+       mul-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.d
new file mode 100644
index 0000000..656ec8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long/d/T_mul_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_long_6.java
+.class public dot.junit.opcodes.mul_long.d.T_mul_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long v0, v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/Test_mul_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/Test_mul_long_2addr.java
new file mode 100644
index 0000000..3996c60
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/Test_mul_long_2addr.java
@@ -0,0 +1,173 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_1;
+import dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_3;
+
+public class Test_mul_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 222000000000l, 5000000000l
+     */
+    public void testN1() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(3195355577426903040l, t.run(222000000000l, 5000000000l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 123456789l
+     */
+    public void testN2() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-15241578750190521l, t.run(-123456789l, 123456789l));
+    }
+
+    /**
+     * @title Arguments = -123456789l, -123456789l
+     */
+    public void testN3() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(15241578750190521l, t.run(-123456789l, -123456789l));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and long makes no sense but shall not crash the VM.  
+     */
+
+    public void testN4() {
+        T_mul_long_2addr_3 t = new T_mul_long_2addr_3();
+        try {
+            t.run(500000l, 2.7d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(0, t.run(0, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1
+     */
+    public void testB2() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(9223372036854775807L, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1
+     */
+    public void testB3() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, Long.MIN_VALUE
+     */
+    public void testB4() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE,
+                Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1
+     */
+    public void testB6() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-9223372036854775807L, t.run(Long.MAX_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1
+     */
+    public void testB7() {
+        T_mul_long_2addr_1 t = new T_mul_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE, -1));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long * int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float * long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference * long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.d
new file mode 100644
index 0000000..1175bf4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_long_2addr_1.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.java
new file mode 100644
index 0000000..886761f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_long_2addr.d;
+
+public class T_mul_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a*b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.d
new file mode 100644
index 0000000..c044257
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_long_2addr_2.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long/2addr v12, v14
+       return-wide v12
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.d
new file mode 100644
index 0000000..6735fe5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_long_2addr_3.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       mul-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.java
new file mode 100644
index 0000000..122cf54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.mul_long_2addr.d;
+
+public class T_mul_long_2addr_3 {
+
+    public long run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.d
new file mode 100644
index 0000000..e708710
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_long_2addr_4.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 14
+
+       mul-long/2addr v11, v13
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.d
new file mode 100644
index 0000000..365e8ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_long_2addr_5.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.limit regs 14
+
+       mul-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.d
new file mode 100644
index 0000000..bd6d465
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/mul_long_2addr/d/T_mul_long_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_mul_long_2addr_6.java
+.class public dot.junit.opcodes.mul_long_2addr.d.T_mul_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       mul-long/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/Test_neg_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/Test_neg_double.java
new file mode 100644
index 0000000..53fe02b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/Test_neg_double.java
@@ -0,0 +1,169 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.neg_double.d.T_neg_double_1;
+import dot.junit.opcodes.neg_double.d.T_neg_double_4;
+
+public class Test_neg_double extends DxTestCase {
+    
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(-1d, t.run(1d));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(1d, t.run(-1d));
+    }
+
+    /**
+     * @title Argument = +0
+     */
+    public void testN3() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(-0d, t.run(+0d));
+    }
+
+    /**
+     * @title Argument = -2.7
+     */
+    public void testN4() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(2.7d, t.run(-2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of long and double makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_neg_double_4 t = new T_neg_double_4();
+        try {
+            t.run(500000l);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Argument = Double.NaN
+     */
+    public void testB1() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(Double.NaN, t.run(Double.NaN));
+    }
+
+    /**
+     * @title Argument = Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(Double.NEGATIVE_INFINITY, t.run(Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = Double.MAX_VALUE
+     */
+    public void testB4() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(-1.7976931348623157E308d, t.run(Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Double.MIN_VALUE
+     */
+    public void testB5() {
+        T_neg_double_1 t = new T_neg_double_1();
+        assertEquals(-4.9E-324d, t.run(Double.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_double.d.T_neg_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_double.d.T_neg_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_double.d.T_neg_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_double.d.T_neg_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.d
new file mode 100644
index 0000000..b094774
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_double_1.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.limit regs 8
+
+       neg-double v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.java
new file mode 100644
index 0000000..dcf3da6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_double.d;
+
+public class T_neg_double_1 {
+
+    public double run(double d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.d
new file mode 100644
index 0000000..a99ecff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_double_2.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.limit regs 8
+
+       neg-double v0, v8
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.d
new file mode 100644
index 0000000..26d6715
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_double_3.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)D
+.limit regs 8
+
+       neg-double v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.d
new file mode 100644
index 0000000..d7a51d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_double_4.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)D
+.limit regs 8
+
+       neg-double v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.java
new file mode 100644
index 0000000..d7507ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_double.d;
+
+public class T_neg_double_4 {
+
+    public double run(long d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.d
new file mode 100644
index 0000000..b8cbb4b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_double_5.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)D
+.limit regs 8
+
+       neg-double v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.d
new file mode 100644
index 0000000..33e252a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_double/d/T_neg_double_6.d
@@ -0,0 +1,18 @@
+.source T_neg_double_6.java
+.class public dot.junit.opcodes.neg_double.d.T_neg_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)D
+.limit regs 8
+
+       neg-double v0, v5
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/Test_neg_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/Test_neg_float.java
new file mode 100644
index 0000000..cfd7edf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/Test_neg_float.java
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.neg_float.d.T_neg_float_1;
+import dot.junit.opcodes.neg_float.d.T_neg_float_6;
+
+public class Test_neg_float extends DxTestCase {
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(-1f, t.run(1f));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(1f, t.run(-1f));
+    }
+
+    /**
+     * @title Argument = +0
+     */
+    public void testN3() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(-0f, t.run(+0f));
+    }
+
+    /**
+     * @title Argument = -2.7
+     */
+    public void testN4() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(2.7f, t.run(-2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_neg_float_6 t = new T_neg_float_6();
+        try {
+            t.run(5);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Float.NaN
+     */
+    public void testB1() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(Float.NaN, t.run(Float.NaN));
+    }
+
+    /**
+     * @title Argument = Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(Float.NEGATIVE_INFINITY, t.run(Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Argument = Float.MAX_VALUE
+     */
+    public void testB4() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(-3.4028235E38f, t.run(Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Float.MIN
+     */
+    public void testB5() {
+        T_neg_float_1 t = new T_neg_float_1();
+        assertEquals(-1.4E-45f, t.run(Float.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_float.d.T_neg_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_float.d.T_neg_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_float.d.T_neg_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_float.d.T_neg_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.d
new file mode 100644
index 0000000..3259f41
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_float_1.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.limit regs 5
+
+       neg-float v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.java
new file mode 100644
index 0000000..9709099
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_float.d;
+
+public class T_neg_float_1 {
+
+    public float run(float d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.d
new file mode 100644
index 0000000..966cbe7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_float_2.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.limit regs 5
+
+       neg-float v0, v5
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.d
new file mode 100644
index 0000000..6c6be2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_float_3.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)F
+.limit regs 5
+
+       neg-float v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.d
new file mode 100644
index 0000000..3b9c963
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_float_4.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)F
+.limit regs 5
+
+       neg-float v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.d
new file mode 100644
index 0000000..7a391f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_5.d
@@ -0,0 +1,18 @@
+.source T_neg_float_5.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)F
+.limit regs 5
+
+       neg-float v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.d
new file mode 100644
index 0000000..897725b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_float_6.java
+.class public dot.junit.opcodes.neg_float.d.T_neg_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)F
+.limit regs 5
+
+       neg-float v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.java
new file mode 100644
index 0000000..f597964
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_float/d/T_neg_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_float.d;
+
+public class T_neg_float_6 {
+
+    public float run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/Test_neg_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/Test_neg_int.java
new file mode 100644
index 0000000..817e03a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/Test_neg_int.java
@@ -0,0 +1,151 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.neg_int.d.T_neg_int_1;
+import dot.junit.opcodes.neg_int.d.T_neg_int_2;
+import dot.junit.opcodes.neg_int.d.T_neg_int_7;
+
+public class Test_neg_int extends DxTestCase {
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN1() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(-1, t.run(1));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN2() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(1, t.run(-1));
+    }
+
+    /**
+     * @title Argument = 32768
+     */
+    public void testN3() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(-32768, t.run(32768));
+    }
+
+    /**
+     * @title Argument = 0
+     */
+    public void testN4() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Check that -x == (~x + 1)
+     */
+    public void testN5() {
+        T_neg_int_2 t = new T_neg_int_2();
+        assertTrue(t.run(5));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_neg_int_7 t = new T_neg_int_7();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(0x80000001, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_neg_int_1 t = new T_neg_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_int.d.T_neg_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_int.d.T_neg_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_int.d.T_neg_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title  type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_int.d.T_neg_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.d
new file mode 100644
index 0000000..0ff47de4d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_int_1.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       neg-int v0, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.java
new file mode 100644
index 0000000..fc2a24b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_int.d;
+
+public class T_neg_int_1 {
+
+    public int run(int d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.d
new file mode 100644
index 0000000..f66368b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.d
@@ -0,0 +1,29 @@
+.source T_neg_int_2.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)Z
+.limit regs 7
+
+       neg-int v4, v6
+       
+       not-int v3, v6
+       add-int/lit8 v2, v3, 1
+
+       if-eq v4, v2, Label1
+       const/4 v1, 0
+
+Label15:
+       return v1
+Label1:
+       const/4 v1, 1
+       goto Label15
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.java
new file mode 100644
index 0000000..f37b31d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_int.d;
+
+public class T_neg_int_2 {
+
+     public boolean run(int d) {
+         return -d == (~d + 1);
+     }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.d
new file mode 100644
index 0000000..90c16f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_int_3.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       neg-int v0, v5
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.d
new file mode 100644
index 0000000..4d2c14b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_int_4.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 5
+
+       neg-int v0, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.d
new file mode 100644
index 0000000..aa67eff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_int_5.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 5
+
+       neg-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.d
new file mode 100644
index 0000000..af24f55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_6.d
@@ -0,0 +1,18 @@
+.source T_neg_int_6.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       neg-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.d
new file mode 100644
index 0000000..b1fc23d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_int_7.java
+.class public dot.junit.opcodes.neg_int.d.T_neg_int_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       neg-int v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.java
new file mode 100644
index 0000000..24e130c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_int/d/T_neg_int_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_int.d;
+
+public class T_neg_int_7 {
+
+    public int run(float d) {
+        return -(int)d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/Test_neg_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/Test_neg_long.java
new file mode 100644
index 0000000..f731c64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/Test_neg_long.java
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.neg_long.d.T_neg_long_1;
+import dot.junit.opcodes.neg_long.d.T_neg_long_2;
+import dot.junit.opcodes.neg_long.d.T_neg_long_4;
+
+public class Test_neg_long extends DxTestCase {
+ 
+    /**
+     * @title Argument = 123123123272432432l
+     */
+    public void testN1() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(-123123123272432432l, t.run(123123123272432432l));
+    }
+
+    /**
+     * @title Argument = 1
+     */
+    public void testN2() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(-1l, t.run(1l));
+    }
+
+    /**
+     * @title Argument = -1
+     */
+    public void testN3() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(1l, t.run(-1l));
+    }
+
+    /**
+     * @title Check that -x == (~x + 1)
+     */
+    public void testN4() {
+        T_neg_long_2 t = new T_neg_long_2();
+        assertTrue(t.run(15l));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of long and double makes no sense but shall not crash the VM.  
+     */
+
+    public void testN5() {
+        T_neg_long_4 t = new T_neg_long_4();
+        try {
+            t.run(1.23d);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Argument = 0
+     */
+    public void testB1() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(-9223372036854775807L, t.run(Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB3() {
+        T_neg_long_1 t = new T_neg_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_long.d.T_neg_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_long.d.T_neg_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_long.d.T_neg_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.neg_long.d.T_neg_long_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.d
new file mode 100644
index 0000000..7973f10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_long_1.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       neg-long v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.java
new file mode 100644
index 0000000..dea3c8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_long.d;
+
+public class T_neg_long_1 {
+
+    public long run(long d) {
+        return -d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.d
new file mode 100644
index 0000000..03891af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.d
@@ -0,0 +1,33 @@
+.source T_neg_long_2.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)Z
+.limit regs 14
+
+       neg-long v10, v12
+       
+       not-long v8, v12
+       const-wide v6, 1
+       add-long v4, v6, v8
+
+       cmp-long v3, v4, v10
+       const/4 v1, 0
+       if-eq v1, v3, Label1
+       const/4 v0, 0
+
+Label15:
+       return v0
+Label1:
+       const/4 v0, 1
+       goto Label15
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.java
new file mode 100644
index 0000000..dcf67e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_long.d;
+
+public class T_neg_long_2 {
+
+    public boolean run(long d) {
+        return -d == (~d + 1);
+     }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.d
new file mode 100644
index 0000000..ab92394
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_long_3.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       neg-long v0, v8
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.d
new file mode 100644
index 0000000..98fe8da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_long_4.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 8
+
+       neg-long v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.java
new file mode 100644
index 0000000..20631a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.neg_long.d;
+
+public class T_neg_long_4 {
+
+    public long run(double d) {
+        return -(long)d;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.d
new file mode 100644
index 0000000..bd3a364e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_long_5.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 8
+
+       neg-long v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.d
new file mode 100644
index 0000000..a936135
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_long_6.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 8
+
+       neg-long v0, v7
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.d
new file mode 100644
index 0000000..66af380
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/neg_long/d/T_neg_long_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_neg_long_7.java
+.class public dot.junit.opcodes.neg_long.d.T_neg_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       neg-long v0, v5
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/TestStubs.java
new file mode 100644
index 0000000..587b4d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/TestStubs.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.new_array;
+
+// package access to trigger IllegalAccessError in testVFE8
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/Test_new_array.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/Test_new_array.java
new file mode 100644
index 0000000..44aedaa1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/Test_new_array.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_array;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.new_array.d.T_new_array_1;
+import dot.junit.opcodes.new_array.d.T_new_array_10;
+import dot.junit.opcodes.new_array.d.T_new_array_11;
+import dot.junit.opcodes.new_array.d.T_new_array_2;
+import dot.junit.opcodes.new_array.d.T_new_array_3;
+
+public class Test_new_array extends DxTestCase {
+
+    /**
+     * @title Array of ints
+     */
+    public void testN1() {
+        T_new_array_1 t = new T_new_array_1();
+        int[] r = t.run(10);
+        int l = r.length;
+        assertEquals(10, l);
+
+        // check default initialization
+        for (int i = 0; i < l; i++) {
+            assertEquals(0, r[i]);
+        }
+
+    }
+
+    /**
+     * @title Array of booleans
+     */
+    public void testN2() {
+        T_new_array_2 t = new T_new_array_2();
+        boolean[] r = t.run(10);
+        int l = r.length;
+        assertEquals(10, l);
+
+        // check default initialization
+        for (int i = 0; i < l; i++) {
+            assertFalse(r[i]);
+        }
+    }
+
+    /**
+     * @title Array of Objects
+     */
+    public void testN3() {
+        T_new_array_3 t = new T_new_array_3();
+        Object[] r = t.run(10);
+        int l = r.length;
+        assertEquals(10, l);
+
+        // check default initialization
+        for (int i = 0; i < l; i++) {
+            assertNull(r[i]);
+        }
+    }
+
+    /**
+     * @title Array size = 0
+     */
+    public void testB1() {
+        T_new_array_1 t = new T_new_array_1();
+        int[] r = t.run(0);
+        assertNotNull(r);
+        assertEquals(0, r.length);
+    }
+
+    /**
+     * @title expected NegativeArraySizeException
+     */
+    public void testE1() {
+        T_new_array_2 t = new T_new_array_2();
+        try {
+            t.run(-1);
+            fail("expected NegativeArraySizeException");
+        } catch (NegativeArraySizeException nase) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title  size argument - long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title  size argument - reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A19
+     * @title  constant pool index
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A22
+     * @title  attempt to create object
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A20
+     * @title  array of more than 255 dimensions
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.new_array.d.T_new_array_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to instantiate array of non-existent class.
+     */
+    public void testVFE7() {
+        try {
+            new T_new_array_11().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to instantiate array of inaccessible class.
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.new_array.TestStubs
+        try {
+            new T_new_array_10().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.d
new file mode 100644
index 0000000..e681faf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_new_array_1.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       new-array v0, v4, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.java
new file mode 100644
index 0000000..7455164
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_array.d;
+
+public class T_new_array_1 {
+
+    public int[] run(int sz) {
+        return new int[sz];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.d
new file mode 100644
index 0000000..4c99085
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_new_array_10.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 5
+
+       const v0, 3
+       new-array v0, v0, [Ldot/junit/opcodes/new_array/TestStubs;
+       
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.java
new file mode 100644
index 0000000..81b7a7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_10.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.new_array.d;
+
+public class T_new_array_10 {
+    public Object[] run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.d
new file mode 100644
index 0000000..3f0b3da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_new_array_11.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()[Ljava/lang/Object;
+.limit regs 5
+
+       const v0, 3
+       new-array v0, v0, [Ljava/lang/ObjectNNN;
+       
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.java
new file mode 100644
index 0000000..e37e1ec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_11.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.new_array.d;
+
+public class T_new_array_11 {
+    public Object[] run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.d
new file mode 100644
index 0000000..de7b8dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_new_array_2.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[Z
+.limit regs 5
+
+       new-array v0, v4, [Z
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.java
new file mode 100644
index 0000000..27103b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_array.d;
+
+public class T_new_array_2 {
+
+    public boolean[] run(int sz) {
+        return new boolean[sz];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.d
new file mode 100644
index 0000000..d560ca6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_new_array_3.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[Ljava/lang/Object;
+.limit regs 5
+
+       new-array v0, v4, [Ljava/lang/Object;
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.java
new file mode 100644
index 0000000..47a28c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_array.d;
+
+public class T_new_array_3 {
+
+    public Object[] run(int sz) {
+        return new Object[sz];
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_4.d
new file mode 100644
index 0000000..2f75ff1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_new_array_4.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       new-array v5, v4, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_5.d
new file mode 100644
index 0000000..9ce7d3e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_new_array_5.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       const-wide v3, 1
+       new-array v0, v3, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.d
new file mode 100644
index 0000000..885beba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_new_array_6.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       new-array v0, v4, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.dfh
new file mode 100644
index 0000000..0794b49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_6.dfh
@@ -0,0 +1,270 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/new_array/d/T_new_array_6.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/new_array/d/T_new_array_6.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 0877446e
+    6E 44 77 08 
+// parsed: offset 12, len 20: signature           : 7016...e092
+    70 16 D1 71 A3 86 82 A2 90 FA CB 70 1E 3F F9 18 2B 71 E0 92 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 9
+    09 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 5
+    05 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 302 (0x00012e) "<init>"
+    2E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 310 (0x000136) "I"
+    36 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 313 (0x000139) "LI"
+    39 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 317 (0x00013d) "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+    3D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 364 (0x00016c) "Ljava/lang/Object;"
+    6C 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 384 (0x000180) "T_new_array_6.java"
+    80 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 404 (0x000194) "V"
+    94 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 407 (0x000197) "[I"
+    97 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 411 (0x00019b) "run"
+    9B 01 00 00 
+
+// type_ids:
+// parsed: offset 148, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 152, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 160, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+// parsed: offset 164, len 4: [4] descriptor_idx: 7 (0x000007) "[I"
+    07 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 2 (0x000002) "LI"
+//     return_type_idx: 4 (0x000004) "[I"
+//     parameters_off: 296 (0x000128)
+    02 00 00 00 04 00 00 00 28 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 8 (0x000008) "run"
+    01 00 01 00 08 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_new_array_6.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 416 (0x0001a0)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 A0 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.new_array.d.T_new_array_6.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.new_array.d.T_new_array_6.run"
+    // parsed: offset 272, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 274, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: new-array v0, v4, [I // class@0004
+//@mod            23 40 04 00 
+            23 40 04 01 
+        // parsed: offset 292, len 2: |0002: return-object v0
+            11 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// TYPE_LIST
+    // parsed: offset 296, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 300, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 302, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 310, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 313, len 4: TYPE_STRING_DATA_ITEM [2] "LI"
+    02 4C 49 00 
+// parsed: offset 317, len 47: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6E 65 77 5F 61 72 72 61 79 2F 64 2F 54 5F 6E 65 77 5F 61 72 72 61 79 5F 36 3B 00 
+// parsed: offset 364, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 384, len 20: TYPE_STRING_DATA_ITEM [5] "T_new_array_6.java"
+    12 54 5F 6E 65 77 5F 61 72 72 61 79 5F 36 2E 6A 61 76 61 00 
+// parsed: offset 404, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 407, len 4: TYPE_STRING_DATA_ITEM [7] "[I"
+    02 5B 49 00 
+// parsed: offset 411, len 5: TYPE_STRING_DATA_ITEM [8] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/new_array/d/T_new_array_6;"
+    // parsed: offset 416, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 417, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 418, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 419, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 421, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 424, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 426, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 427, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 428, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 430, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 112 (0x000070)
+        01 00 00 00 09 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 5
+    //      offset: 148 (0x000094)
+        02 00 00 00 05 00 00 00 94 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 02 00 00 00 A8 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 296 (0x000128)
+        01 10 00 00 01 00 00 00 28 01 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 9
+    //      offset: 302 (0x00012e)
+        02 20 00 00 09 00 00 00 2E 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 416 (0x0001a0)
+        00 20 00 00 01 00 00 00 A0 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_7.d
new file mode 100644
index 0000000..f6f2588
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_new_array_7.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[Ljava/lang/Object;
+.limit regs 5
+
+       new-array v0, v4, java/lang/Object
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_8.d
new file mode 100644
index 0000000..a221fc2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_new_array_8.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[Ljava/lang/Object;
+.limit regs 5
+
+       new-array v0, v4, [[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[Ljava/lang/Object;
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_9.d
new file mode 100644
index 0000000..914322a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_array/d/T_new_array_9.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_new_array_9.java
+.class public dot.junit.opcodes.new_array.d.T_new_array_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)[I
+.limit regs 5
+
+       new-array v0, v3, [I
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/TTestClass.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/TTestClass.java
new file mode 100644
index 0000000..679e665
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/TTestClass.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_instance;
+
+public class TTestClass {
+
+    @SuppressWarnings("unused")
+    private class TestStub {
+        // used by testE3
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/TestStubs.java
new file mode 100644
index 0000000..ca22946
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/TestStubs.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_instance;
+
+// package access to trigger IllegalAccessError in testVFE5
+class TestStubs {
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/Test_new_instance.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/Test_new_instance.java
new file mode 100644
index 0000000..d994f65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/Test_new_instance.java
@@ -0,0 +1,193 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_instance;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.new_instance.d.T_new_instance_1;
+import dot.junit.opcodes.new_instance.d.T_new_instance_3;
+import dot.junit.opcodes.new_instance.d.T_new_instance_4;
+import dot.junit.opcodes.new_instance.d.T_new_instance_5;
+import dot.junit.opcodes.new_instance.d.T_new_instance_8;
+import dot.junit.opcodes.new_instance.d.T_new_instance_9;
+
+
+public class Test_new_instance extends DxTestCase {
+
+    /**
+     * @title new String
+     */
+    public void testN1() {
+        T_new_instance_1 t = new T_new_instance_1();
+        String s = t.run();
+        assertNotNull(s);
+        assertEquals(0, s.compareTo("abc"));
+    }
+
+    /**
+     * @title class initialization throws exception
+     */
+    public void testE1() {
+        try {
+            T_new_instance_3.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A21
+     * @title  attempt to instantiate interface
+     */
+    public void testE4() {
+        //@uses dot.junit.opcodes.new_instance.d.TestAbstractClass
+        //@uses dot.junit.opcodes.new_instance.d.T_new_instance_8
+        T_new_instance_8 t = new T_new_instance_8();
+        try {
+            t.run();
+            fail("expected InstantiationError");
+        } catch (InstantiationError ie) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A21
+     * @title  attempt to instantiate abstract
+     * class
+     */
+    public void testE5() {
+        //@uses dot.junit.opcodes.new_instance.d.TestAbstractClass
+        //@uses dot.junit.opcodes.new_instance.d.T_new_instance_9
+        T_new_instance_9 t = new T_new_instance_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error iae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A18
+     * @title  constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A21
+     * @title  attempt to create array using new
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B6
+     * @title Attempt to access uninitialized class (before <init> is
+     * called
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to instantiate array of inaccessible class.
+     */
+    public void testVFE5() {
+        //@uses dot.junit.opcodes.new_instance.TestStubs
+        //@uses dot.junit.opcodes.new_instance.d.T_new_instance_4
+        try {
+            new T_new_instance_4().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to instantiate array of non-existent class.
+     */
+    public void testVFE6() {
+        try {
+            new T_new_instance_5().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint B7
+     * @title A register which holds the result of a new-instance instruction must not be used
+     * if the same new-instance  instruction is again executed before the instance is initialized
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B7
+     * @title A register which holds the result of a new-instance instruction must not be used
+     * if the same new-instance  instruction is again executed before the instance is initialized
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.new_instance.d.T_new_instance_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.d
new file mode 100644
index 0000000..0cff87a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_new_instance_1.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 6
+
+       new-instance v1, java/lang/String
+       const-string v3, "abc"
+       invoke-direct {v1, v3}, java/lang/String/<init>(Ljava/lang/String;)V
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.java
new file mode 100644
index 0000000..c8f4878
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_1 {
+
+    public String run() {
+        return new String("abc");
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.d
new file mode 100644
index 0000000..cd9096d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_new_instance_10.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       new-instance v6, java/lang/String
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d
new file mode 100644
index 0000000..75fb804
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_11.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_new_instance_11.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v4, 5
+       move-object v1, v5
+Label0:
+       move-object v0, v1
+       new-instance v1, java/lang/Integer
+       
+       add-int/lit8 v4, v4, -1
+       if-nez v4, Label0
+
+       invoke-direct {v1, v4}, java/lang/Integer/<init>(I)V
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.d
new file mode 100644
index 0000000..e4b025e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_12.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 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.
+
+.source T_new_instance_12.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+    const v0, 0
+Label1:
+    new-instance v1,        java/lang/Integer
+    if-nez v0, INIT
+    move-object v2, v1
+    const v0, 1
+    goto Label1
+INIT:
+        
+    invoke-direct {v1, v0}, java/lang/Integer/<init>(I)V
+    invoke-virtual {v2}, java/lang/Integer/toString()Ljava/lang/String;
+
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.d
new file mode 100644
index 0000000..2a8eefb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_2.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 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.
+
+.source T_new_instance_2.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_2
+.super java/lang/Object
+
+.field  i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 5
+
+    new-instance v0, dot/junit/opcodes/new_instance/d/T_new_instance_2
+;    invoke-direct {v0}, dot/junit/opcodes/new_instance/d/T_new_instance_2/<init>()V
+
+    iget v1, v0, dot.junit.opcodes.new_instance.d.T_new_instance_2.i I
+
+    return v1
+
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.d
new file mode 100644
index 0000000..f6cd6fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 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.
+
+.source T_new_instance_3.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_3
+.super java/lang/Object
+
+.field static i I
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/16 v0, 123
+       const/4 v1, 0
+       div-int/lit8 v0, v0, 0
+       sput v0, dot.junit.opcodes.new_instance.d.T_new_instance_3.i I
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+Label5:
+       return-void
+.end method
+
+.method public static run()I
+.limit regs 4
+
+       new-instance v1, dot/junit/opcodes/new_instance/d/T_new_instance_3
+       invoke-direct {v1}, dot/junit/opcodes/new_instance/d/T_new_instance_3/<init>()V
+
+       sget v1, dot.junit.opcodes.new_instance.d.T_new_instance_3.i I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.java
new file mode 100644
index 0000000..dd8bb15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_3.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_3 {
+
+    static int i = 123 / 0;
+
+    public static int run() {
+        T_new_instance_3 t = new T_new_instance_3();
+        return t.i;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.d
new file mode 100644
index 0000000..a92c597
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_new_instance_4.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/new_instance/TestStubs
+;       invoke-direct {v1}, dot/junit/opcodes/new_instance/TestStubs/<init>()V
+; intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.java
new file mode 100644
index 0000000..9ed269f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_4 {
+
+     public Object run() {
+            return null;
+        }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.d
new file mode 100644
index 0000000..4651f6a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_new_instance_5.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/new_instance/Test_new_instanceNNNNN
+;       invoke-direct {v1}, dot/junit/opcodes/new_instance/TTestClass/<init>()V
+; intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.java
new file mode 100644
index 0000000..7c6b0c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_5 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.d
new file mode 100644
index 0000000..0565aea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_new_instance_6.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 6
+
+       new-instance v1, java/lang/String
+       const-string v3, "abc"
+       invoke-direct {v1, v3}, java/lang/String/<init>(Ljava/lang/String;)V
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.dfh
new file mode 100644
index 0000000..91ac7e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_6.dfh
@@ -0,0 +1,279 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/new_instance/d/T_new_instance_6.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/new_instance/d/T_new_instance_6.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a36952db
+    DB 52 69 A3 
+// parsed: offset 12, len 20: signature           : 71b1...5136
+    71 B1 EB E5 E0 7E D8 D6 08 9A F1 CD 12 14 9C 8E 6E 4F 51 36 
+// parsed: offset 32, len 4: file_size           : 624
+    70 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 488 (0x0001e8)
+    E8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 10
+    0A 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 3
+    03 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 168 (0x0000a8)
+    A8 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 4
+    04 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 236 (0x0000ec)
+    EC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 356
+    64 01 00 00 
+// parsed: offset 108, len 4: data_off            : 268 (0x00010c)
+    0C 01 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 330 (0x00014a) "<init>"
+    4A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 338 (0x000152) "L"
+    52 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 341 (0x000155) "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+    55 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 394 (0x00018a) "Ljava/lang/Object;"
+    8A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 414 (0x00019e) "Ljava/lang/String;"
+    9E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 434 (0x0001b2) "T_new_instance_6.java"
+    B2 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 457 (0x0001c9) "V"
+    C9 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 460 (0x0001cc) "VL"
+    CC 01 00 00 
+// parsed: offset 144, len 4: [8] string_data_off: 464 (0x0001d0) "abc"
+    D0 01 00 00 
+// parsed: offset 148, len 4: [9] string_data_off: 469 (0x0001d5) "run"
+    D5 01 00 00 
+
+// type_ids:
+// parsed: offset 152, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+    02 00 00 00 
+// parsed: offset 156, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 160, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/String;"
+    04 00 00 00 
+// parsed: offset 164, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 168, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 2 (0x000002) "Ljava/lang/String;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 180, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+// parsed: offset 192, len 12: [2] 
+//     shorty_idx: 7 (0x000007) "VL"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 324 (0x000144)
+    07 00 00 00 03 00 00 00 44 01 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 204, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 212, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 9 (0x000009) "run"
+    00 00 00 00 09 00 00 00 
+// parsed: offset 220, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 228, len 8: [3] class_idx: 2 (0x000002)  proto_idx: 2 (0x000002) name_idx: 0 (0x000000) "<init>"
+    02 00 02 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 236, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_new_instance_6.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 474 (0x0001da)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 DA 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.new_instance.d.T_new_instance_6.<init>"
+    // parsed: offset 268, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 284, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 290, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.new_instance.d.T_new_instance_6.run"
+    // parsed: offset 292, len 2: registers_size: 6
+        06 00 
+    // parsed: offset 294, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 296, len 2: outs_size: 2
+        02 00 
+    // parsed: offset 298, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 300, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 304, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 308, len 4: |0000: new-instance v1, Ljava/lang/String; // class@0002
+//@mod            22 01 02 00 
+            22 01 02 01 
+        // parsed: offset 312, len 4: |0002: const-string v3, "abc" // string@0008
+            1A 03 08 00 
+        // parsed: offset 316, len 6: |0004: invoke-direct {v1, v3}, Ljava/lang/String;.<init>:(Ljava/lang/String;)V // method@0003
+            70 20 03 00 31 00 
+        // parsed: offset 322, len 2: |0007: return-object v1
+            11 01 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 324, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 328, len 2: type_item [0] type_idx: 2
+        02 00 
+// parsed: offset 330, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 338, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 341, len 53: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6E 65 77 5F 69 6E 73 74 61 6E 63 65 2F 64 2F 54 5F 6E 65 77 5F 69 6E 73 74 61 6E 63 65 5F 36 3B 00 
+// parsed: offset 394, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 414, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/String;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 53 74 72 69 6E 67 3B 00 
+// parsed: offset 434, len 23: TYPE_STRING_DATA_ITEM [5] "T_new_instance_6.java"
+    15 54 5F 6E 65 77 5F 69 6E 73 74 61 6E 63 65 5F 36 2E 6A 61 76 61 00 
+// parsed: offset 457, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 460, len 4: TYPE_STRING_DATA_ITEM [7] "VL"
+    02 56 4C 00 
+// parsed: offset 464, len 5: TYPE_STRING_DATA_ITEM [8] "abc"
+    03 61 62 63 00 
+// parsed: offset 469, len 5: TYPE_STRING_DATA_ITEM [9] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/new_instance/d/T_new_instance_6;"
+    // parsed: offset 474, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 475, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 476, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 477, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 479, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 482, len 2: code_off: 268 (0x00010c)
+                8C 02 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 484, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 485, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 486, len 2: code_off: 292 (0x000124)
+                A4 02 
+// map_list:
+    // parsed: offset 488, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 492, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 504, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 112 (0x000070)
+        01 00 00 00 0A 00 00 00 70 00 00 00 
+    // parsed: offset 516, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 152 (0x000098)
+        02 00 00 00 04 00 00 00 98 00 00 00 
+    // parsed: offset 528, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 168 (0x0000a8)
+        03 00 00 00 03 00 00 00 A8 00 00 00 
+    // parsed: offset 540, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 204 (0x0000cc)
+        05 00 00 00 04 00 00 00 CC 00 00 00 
+    // parsed: offset 552, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 236 (0x0000ec)
+        06 00 00 00 01 00 00 00 EC 00 00 00 
+    // parsed: offset 564, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 268 (0x00010c)
+        01 20 00 00 02 00 00 00 0C 01 00 00 
+    // parsed: offset 576, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 324 (0x000144)
+        01 10 00 00 01 00 00 00 44 01 00 00 
+    // parsed: offset 588, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 10
+    //      offset: 330 (0x00014a)
+        02 20 00 00 0A 00 00 00 4A 01 00 00 
+    // parsed: offset 600, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 474 (0x0001da)
+        00 20 00 00 01 00 00 00 DA 01 00 00 
+    // parsed: offset 612, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 488 (0x0001e8)
+        00 10 00 00 01 00 00 00 E8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.d
new file mode 100644
index 0000000..f2e7fcf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_new_instance_7.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       new-instance v1, [Ljava/lang/Object;
+; intentionally return v2 ("this")           
+       return-object v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.java
new file mode 100644
index 0000000..f93c886
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_7 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.d
new file mode 100644
index 0000000..f474fe9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_new_instance_8.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/new_instance/d/TestInterface
+;       invoke-direct {v1}, dot/junit/opcodes/new_instance/d/TestInterface/<init>()V
+; intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.java
new file mode 100644
index 0000000..1ca9c38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_8 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.d
new file mode 100644
index 0000000..7af9f46
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_new_instance_9.java
+.class public dot.junit.opcodes.new_instance.d.T_new_instance_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+Label5:
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/new_instance/d/TestAbstractClass
+;       invoke-direct {v1}, dot/junit/opcodes/new_instance/d/TestAbstractClass/<init>()V
+; intentionally return v4 ("this")    
+       return-object v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.java
new file mode 100644
index 0000000..9f1d2bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/T_new_instance_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_instance.d;
+
+public class T_new_instance_9 {
+
+    public Object run() {
+        return new Object();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.d b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.d
new file mode 100644
index 0000000..ea321c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestAbstractClass.d
@@ -0,0 +1,22 @@
+; Copyright (C) 2008 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.
+
+.source TestAbstractClass.java
+.interface public dot.junit.opcodes.new_instance.d.TestInterface
+
+
+.source TestAbstractClass.java
+.class abstract public dot.junit.opcodes.new_instance.d.TestAbstractClass
+.super java/lang/Object
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestStubs.java
new file mode 100644
index 0000000..cb28c6a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/new_instance/d/TestStubs.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.new_instance.d;
+
+
+interface TestInterface {
+    public abstract void test();
+}
+
+abstract class TestAbstractClass{
+    
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/nop/Test_nop.java b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/Test_nop.java
new file mode 100644
index 0000000..9044e8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/Test_nop.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.nop;
+
+import dot.junit.DxTestCase;
+import dot.junit.opcodes.nop.d.T_nop_1;
+
+public class Test_nop extends DxTestCase {
+    /**
+     * @title tests nop
+     */
+    public void testN1() {
+        T_nop_1 t = new T_nop_1();
+        // how do we test nop - e.g. initialize some registers and
+        // test if nothing has changed
+        assertTrue(t.run());
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.d
new file mode 100644
index 0000000..59a85e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_nop_1.java
+.class public dot.junit.opcodes.nop.d.T_nop_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 3
+       move-object v1, v2
+       invoke-direct {v1}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 4
+       const v1, 12345678
+       nop
+       nop
+       nop
+       nop
+       nop
+       move v3, v1
+       nop
+       nop
+       nop
+       if-ne v1, v3, Label1
+       const/4 v1, 1
+       return v1
+Label1:
+       const/4 v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.java
new file mode 100644
index 0000000..ec16b22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/nop/d/T_nop_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.nop.d;
+
+public class T_nop_1 {
+
+    public boolean run() {
+      return true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/Test_not_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/Test_not_int.java
new file mode 100644
index 0000000..0960e32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/Test_not_int.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.not_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.not_int.d.T_not_int_1;
+import dot.junit.opcodes.not_int.d.T_not_int_2;
+
+public class Test_not_int extends DxTestCase {
+    
+    /**
+     * @title Argument = 5; 256
+     */
+    public void testN1() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(-6, t.run(5));
+        assertEquals(-257, t.run(256));
+    }
+    
+    /**
+     * @title Argument = -5, -256
+     */
+    public void testN2() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(4, t.run(-5));
+        assertEquals(255, t.run(-256));
+    }
+    
+    /**
+     * @title Argument = 0xcafe; 0x12c
+     */
+    public void testN3() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(-0xcaff, t.run(0xcafe));
+        assertEquals(-0x12d, t.run(0x12c));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this multiplication of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_not_int_2 t = new T_not_int_2();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 1
+     */
+    public void testB3() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(-2, t.run(1));
+    }
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB4() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(-1, t.run(0));
+    }
+    
+    /**
+     * @title Argument = -1
+     */
+    public void testB5() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(0, t.run(-1));
+    }
+    
+    /**
+     * @title Argument = Short.MAX_VALUE
+     */
+    public void testB6() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(Short.MIN_VALUE, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title Argument = Short.MIN_VALUE
+     */
+    public void testB7() {
+        T_not_int_1 t = new T_not_int_1();
+        assertEquals(Short.MAX_VALUE, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.not_int.d.T_not_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.not_int.d.T_not_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.not_int.d.T_not_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.not_int.d.T_not_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.d
new file mode 100644
index 0000000..2b04225
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_not_int_1.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       not-int v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.java
new file mode 100644
index 0000000..b8ac929
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.not_int.d;
+
+public class T_not_int_1 {
+    
+    public int run(int d) {
+        return ~d;
+    }    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.d
new file mode 100644
index 0000000..3e1ff4a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_not_int_2.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+       not-int v0, v4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.java
new file mode 100644
index 0000000..679acb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.not_int.d;
+
+public class T_not_int_2 {
+    
+    public int run(float d) {
+        return ~(int)d;
+    }    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_3.d
new file mode 100644
index 0000000..a42823e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_not_int_3.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       not-int v0, v5
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_4.d
new file mode 100644
index 0000000..1182ead
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_not_int_4.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 5
+
+       not-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_5.d
new file mode 100644
index 0000000..a144392
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_not_int_5.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 5
+
+       not-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_6.d
new file mode 100644
index 0000000..c22438f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_int/d/T_not_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_not_int_6.java
+.class public dot.junit.opcodes.not_int.d.T_not_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       not-int v0, v3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/Test_not_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/Test_not_long.java
new file mode 100644
index 0000000..a40cdd1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/Test_not_long.java
@@ -0,0 +1,156 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.not_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.not_long.d.T_not_long_1;
+import dot.junit.opcodes.not_long.d.T_not_long_2;
+
+public class Test_not_long extends DxTestCase {
+    
+    /**
+     * @title Argument = 500000l
+     */
+    public void testN1() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(-500001l, t.run(500000l));
+    }
+    
+    /**
+     * @title Argument = -500000l
+     */
+    public void testN2() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(499999l, t.run(-500000l));
+    }
+    
+    /**
+     * @title Argument = 0xcafe; 0x12c
+     */
+    public void testN3() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(-0xcaff, t.run(0xcafe));
+        assertEquals(-0x12d, t.run(0x12c));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this multiplication of long and double makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_not_long_2 t = new T_not_long_2();
+        try {
+            t.run(1.79d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Argument = Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(Long.MIN_VALUE, t.run(Long.MAX_VALUE));
+    }
+    
+    /**
+     * @title Argument = Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(Long.MAX_VALUE, t.run(Long.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 1l
+     */
+    public void testB3() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(-2l, t.run(1l));
+    }
+    
+    /**
+     * @title Argument = 0l
+     */
+    public void testB4() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(-1l, t.run(0l));
+    }
+    
+    /** 
+     * @title Argument = -1l
+     */
+    public void testB5() {
+        T_not_long_1 t = new T_not_long_1();
+        assertEquals(0l, t.run(-1l));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.not_long.d.T_not_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.not_long.d.T_not_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.not_long.d.T_not_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.not_long.d.T_not_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.d
new file mode 100644
index 0000000..9d27053
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_not_long_1.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 8
+
+       not-long v0, v6
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.java
new file mode 100644
index 0000000..535d69d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.not_long.d;
+
+public class T_not_long_1 {
+    
+    public long run(long d) {
+        return ~d;
+    } 
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.d
new file mode 100644
index 0000000..cd253a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_not_long_2.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)J
+.limit regs 5
+
+       not-long v0, v3
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.java
new file mode 100644
index 0000000..9f93955
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.not_long.d;
+
+public class T_not_long_2 {
+    
+    public long run(double d) {
+        return ~(long)d;
+    } 
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_3.d
new file mode 100644
index 0000000..b9eda02
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_not_long_3.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 5
+
+       not-long v0, v5
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_4.d
new file mode 100644
index 0000000..3ecd0f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_not_long_4.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)J
+.limit regs 5
+
+       not-long v0, v4
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_5.d
new file mode 100644
index 0000000..31c1dfc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_not_long_5.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)J
+.limit regs 5
+
+       not-long v0, v4
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_6.d
new file mode 100644
index 0000000..4d511df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/not_long/d/T_not_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_not_long_6.java
+.class public dot.junit.opcodes.not_long.d.T_not_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)J
+.limit regs 5
+
+       not-long v0, v2
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/Test_opc_const.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/Test_opc_const.java
new file mode 100644
index 0000000..aa19e6c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/Test_opc_const.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_const;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.opc_const.d.T_opc_const_1;
+import dot.junit.opcodes.opc_const.d.T_opc_const_2;
+
+public class Test_opc_const extends DxTestCase {
+    /**
+     * @title const v1, 1.54
+     */
+    public void testN1() {
+        T_opc_const_1 t = new T_opc_const_1();
+        float a = 1.5f;
+        float b = 0.04f;
+        assertEquals(a + b, t.run(), 0f);
+        assertEquals(1.54f, t.run(), 0f);
+    }
+    
+    /**
+     * @title const v254, 20000000 
+     */
+    public void testN2() {
+        T_opc_const_2 t = new T_opc_const_2();
+         int a = 10000000;
+         int b = 10000000;
+        assertEquals(a + b, t.run());
+    }
+
+    /**
+     * @constraint B1 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_const.d.T_opc_const_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title When writing to a register that is one half of a register 
+     * pair, but not touching the other half, the old register pair gets broken up, and the 
+     * other register involved in it becomes undefined
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_const.d.T_opc_const_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.d
new file mode 100644
index 0000000..8246f1b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_const_1.java
+.class public dot.junit.opcodes.opc_const.d.T_opc_const_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()F
+.limit regs 3
+
+       const v1, 1.54
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.java
new file mode 100644
index 0000000..1bf4f0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_const.d;
+
+public class T_opc_const_1 {
+    
+    public float run(){
+        return 1.54f;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.d
new file mode 100644
index 0000000..d651fe92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_const_2.java
+.class public dot.junit.opcodes.opc_const.d.T_opc_const_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 255
+
+       const v254, 20000000
+       return v254
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.java
new file mode 100644
index 0000000..07cd52a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_const.d;
+
+public class T_opc_const_2 {
+
+    public int run() {
+        return 20000000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.d
new file mode 100644
index 0000000..d0065db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_const_3.java
+.class public dot.junit.opcodes.opc_const.d.T_opc_const_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v3, 1234
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.d
new file mode 100644
index 0000000..f2d5697
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_const/d/T_opc_const_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_const_4.java
+.class public dot.junit.opcodes.opc_const.d.T_opc_const_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+       const-wide v0, 1234    
+       const v1, 1234
+
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/Test_opc_goto.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/Test_opc_goto.java
new file mode 100644
index 0000000..a3558fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/Test_opc_goto.java
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_goto;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.opc_goto.d.T_opc_goto_1;
+
+public class Test_opc_goto extends DxTestCase {
+   /**
+    * @title forward and backward goto. This test also tests constraint C17 allowing to have
+     * backward goto as a last opcode in the method.
+    */
+   public void testN1() {
+       T_opc_goto_1 t = new T_opc_goto_1();
+       assertEquals(0, t.run(20));
+   }
+
+   /**
+    * @constraint A6 
+    * @title branch target is inside instruction
+    */
+   public void testVFE1() {
+       try {
+           Class.forName("dot.junit.opcodes.opc_goto.d.T_opc_goto_2");
+           fail("expected a verification exception");
+       } catch (Throwable t) {
+           DxUtil.checkVerifyException(t);
+       }
+   }
+
+   /**
+    * @constraint A6 
+    * @title branch target shall be inside the method
+    */
+   public void testVFE2() {
+       try {
+           Class.forName("dot.junit.opcodes.opc_goto.d.T_opc_goto_3");
+           fail("expected a verification exception");
+       } catch (Throwable t) {
+           DxUtil.checkVerifyException(t);
+       }
+   }
+
+   /**
+    * @constraint n/a 
+    * @title zero offset
+    */
+   public void testVFE3() {
+       try {
+           Class.forName("dot.junit.opcodes.opc_goto.d.T_opc_goto_4");
+           fail("expected a verification exception");
+       } catch (Throwable t) {
+           DxUtil.checkVerifyException(t);
+       }
+   }
+   
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.d
new file mode 100644
index 0000000..e9b75ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_goto_1.java
+.class public dot.junit.opcodes.opc_goto.d.T_opc_goto_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+; test positive offset
+      goto Label2
+LabelReturn:      
+      return v4
+      
+Label2:
+       add-int/lit8 v4, v4, -1
+       if-lez v4, LabelExit
+; test negative offset       
+       goto Label2
+       
+LabelExit:       
+       goto LabelReturn
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.java
new file mode 100644
index 0000000..30c4e74
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_goto.d;
+
+public class T_opc_goto_1 {
+
+    public int run(int a) {
+        while (a > 0) {
+            a--;
+        }
+        return a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.d
new file mode 100644
index 0000000..8cb3602
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_goto_2.java
+.class public dot.junit.opcodes.opc_goto.d.T_opc_goto_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dfh
new file mode 100644
index 0000000..3917c98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_2.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : cf734093
+    93 40 73 CF 
+// parsed: offset 12, len 20: signature           : 19a1...8fae
+    19 A1 80 04 F4 E4 1C 91 9B AB 4F FF A1 01 C6 17 E3 C0 8F AE 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 290 (0x000122) "<init>"
+    22 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 298 (0x00012a) "I"
+    2A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 301 (0x00012d) "II"
+    2D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 305 (0x000131) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+    31 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 370 (0x000172) "T_opc_goto_2.java"
+    72 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 284 (0x00011c)
+    02 00 00 00 00 00 00 00 1C 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_opc_goto_2.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 397 (0x00018d)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8D 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_2.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_2.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 2
+        02 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+//@mod            28 01 
+            28 02 
+        // parsed: offset 282, len 2: |0001: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 284, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 288, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 290, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 298, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 301, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 305, len 45: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+    2B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6F 70 63 5F 67 6F 74 6F 2F 64 2F 54 5F 6F 70 63 5F 67 6F 74 6F 5F 32 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 19: TYPE_STRING_DATA_ITEM [5] "T_opc_goto_2.java"
+    11 54 5F 6F 70 63 5F 67 6F 74 6F 5F 32 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_2;"
+    // parsed: offset 397, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 398, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 400, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 401, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 402, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 405, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 408, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 409, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 411, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 284 (0x00011c)
+        01 10 00 00 01 00 00 00 1C 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 290 (0x000122)
+        02 20 00 00 08 00 00 00 22 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 397 (0x00018d)
+        00 20 00 00 01 00 00 00 8D 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.d
new file mode 100644
index 0000000..8edcca6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_goto_3.java
+.class public dot.junit.opcodes.opc_goto.d.T_opc_goto_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto Label2
+Label2:
+       return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dfh
new file mode 100644
index 0000000..9da5505
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4d883f57
+    57 3F 88 4D 
+// parsed: offset 12, len 20: signature           : 16da...c0ad
+    16 DA B2 AB 5C D5 C9 74 71 01 63 17 93 81 6E 18 34 96 C0 AD 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 290 (0x000122) "<init>"
+    22 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 298 (0x00012a) "I"
+    2A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 301 (0x00012d) "II"
+    2D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 305 (0x000131) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+    31 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 370 (0x000172) "T_opc_goto_3.java"
+    72 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 284 (0x00011c)
+    02 00 00 00 00 00 00 00 1C 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_opc_goto_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 397 (0x00018d)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8D 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_3.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_3.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 2
+        02 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+//@mod            28 01 
+            28 10 
+        // parsed: offset 282, len 2: |0001: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 284, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 288, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 290, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 298, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 301, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 305, len 45: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+    2B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6F 70 63 5F 67 6F 74 6F 2F 64 2F 54 5F 6F 70 63 5F 67 6F 74 6F 5F 33 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 19: TYPE_STRING_DATA_ITEM [5] "T_opc_goto_3.java"
+    11 54 5F 6F 70 63 5F 67 6F 74 6F 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_3;"
+    // parsed: offset 397, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 398, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 400, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 401, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 402, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 405, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 408, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 409, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 411, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 284 (0x00011c)
+        01 10 00 00 01 00 00 00 1C 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 290 (0x000122)
+        02 20 00 00 08 00 00 00 22 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 397 (0x00018d)
+        00 20 00 00 01 00 00 00 8D 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.d
new file mode 100644
index 0000000..6c29f65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_goto_4.java
+.class public dot.junit.opcodes.opc_goto.d.T_opc_goto_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+      goto Label1
+Label1:      
+      return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dfh
new file mode 100644
index 0000000..5666601
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/opc_goto/d/T_opc_goto_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 97783f02
+    02 3F 78 97 
+// parsed: offset 12, len 20: signature           : a610...059a
+    A6 10 17 6F A6 2E 7A AE A2 D0 27 EA 5E C8 BF 3E 13 91 05 9A 
+// parsed: offset 32, len 4: file_size           : 548
+    24 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 412 (0x00019c)
+    9C 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 308
+    34 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 290 (0x000122) "<init>"
+    22 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 298 (0x00012a) "I"
+    2A 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 301 (0x00012d) "II"
+    2D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 305 (0x000131) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+    31 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 370 (0x000172) "T_opc_goto_4.java"
+    72 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 284 (0x00011c)
+    02 00 00 00 00 00 00 00 1C 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_opc_goto_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 397 (0x00018d)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 8D 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_4.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.opc_goto.d.T_opc_goto_4.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 2
+        02 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+//@mod            28 01 
+            28 00 
+        // parsed: offset 282, len 2: |0001: return v4
+            0F 04 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 284, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 288, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 290, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 298, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 301, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 305, len 45: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+    2B 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 6F 70 63 5F 67 6F 74 6F 2F 64 2F 54 5F 6F 70 63 5F 67 6F 74 6F 5F 34 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 19: TYPE_STRING_DATA_ITEM [5] "T_opc_goto_4.java"
+    11 54 5F 6F 70 63 5F 67 6F 74 6F 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/opc_goto/d/T_opc_goto_4;"
+    // parsed: offset 397, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 398, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 399, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 400, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 401, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 402, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 405, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 408, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 409, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 411, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 412, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 416, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 428, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 440, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 452, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 464, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 476, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 488, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 500, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 284 (0x00011c)
+        01 10 00 00 01 00 00 00 1C 01 00 00 
+    // parsed: offset 512, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 290 (0x000122)
+        02 20 00 00 08 00 00 00 22 01 00 00 
+    // parsed: offset 524, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 397 (0x00018d)
+        00 20 00 00 01 00 00 00 8D 01 00 00 
+    // parsed: offset 536, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 412 (0x00019c)
+        00 10 00 00 01 00 00 00 9C 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/Test_opc_return.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/Test_opc_return.java
new file mode 100644
index 0000000..2fe8323
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/Test_opc_return.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_return;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.opc_return.d.T_opc_return_1;
+import dot.junit.opcodes.opc_return.d.T_opc_return_3;
+
+public class Test_opc_return extends DxTestCase {
+    /**
+     * @title check that frames are discarded and reinstananted correctly
+     */
+    public void testN1() {
+        T_opc_return_1 t = new T_opc_return_1();
+        assertEquals(123456, t.run());
+    }
+
+
+    /**
+     * @title Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_opc_return_3 t = new T_opc_return_3();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B11 
+     * @title method's return type - long
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_return.d.T_opc_return_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_return.d.T_opc_return_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_return.d.T_opc_return_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title return on wide register pair
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.opc_return.d.T_opc_return_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.d
new file mode 100644
index 0000000..29ae5bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.d
@@ -0,0 +1,70 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_return_1.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 10
+    
+    const v1, 1
+    const v2, 2
+    const v3, 3
+    
+    const v4, 0xdddd
+        
+    invoke-static {}, dot/junit/opcodes/opc_return/d/T_opc_return_1/test()I
+    move-result v6
+    
+    if-ne v4, v6, Label0
+
+    const v4, 1    
+    if-ne v1, v4, Label0
+    
+    const v4, 2    
+    if-ne v2, v4, Label0
+
+    const v4, 3
+    if-ne v3, v4, Label0
+    
+    const v0, 123456
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method private static test()I
+.limit regs 6
+    
+    const v0, 9999
+    const v1, 0xaaa
+    const v2, 0xbbbb
+    const v3, 0xcccc
+    
+    const v4, 0xdddd
+    return v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.java
new file mode 100644
index 0000000..2f5029d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_return.d;
+
+public class T_opc_return_1 {
+
+    public int run() {
+        test();
+        return 123456;
+    }
+    
+    private static int test() {
+        int a = 0xaaaa;
+        int b = 0xbbbb;
+        int c = 0xcccc;
+        return 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d
new file mode 100644
index 0000000..2410da3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_return_3.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private declared_synchronized test()F
+.limit regs 4
+
+    monitor-exit v3
+    const v0, 1.0
+    return v0
+.end method
+
+
+
+.method public run()Z
+.limit regs 1
+
+    invoke-direct {v0}, dot/junit/opcodes/opc_return/d/T_opc_return_3/test()F
+
+    const v0, 1
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.java
new file mode 100644
index 0000000..6b93391
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_3.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_return.d;
+
+public class T_opc_return_3 {
+    
+    private synchronized long test() {
+        return 1;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.d
new file mode 100644
index 0000000..884ce2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_return_5.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 6
+    
+    const v0, 1
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.d
new file mode 100644
index 0000000..c19f760
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_return_6.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 6
+    
+    const v0, 1
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.d
new file mode 100644
index 0000000..cec1f9c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_return_7.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    return v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.d
new file mode 100644
index 0000000..1ca6832
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_return/d/T_opc_return_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_return_8.java
+.class public dot.junit.opcodes.opc_return.d.T_opc_return_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    const-wide v0, 0
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/Test_opc_throw.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/Test_opc_throw.java
new file mode 100644
index 0000000..5055336
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/Test_opc_throw.java
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_throw;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_1;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_12;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_2;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_4;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_5;
+import dot.junit.opcodes.opc_throw.d.T_opc_throw_8;
+
+public class Test_opc_throw extends DxTestCase {
+    /**
+     * @title check throw functionality. This test also tests constraint C17 allowing to have
+     * throw as a last opcode in the method.
+     */
+    public void testN1() {
+        T_opc_throw_1 t = new T_opc_throw_1();
+        try {
+            t.run();
+            fail("must throw a RuntimeException");
+        } catch (RuntimeException re) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Throwing of the objectref on the class Throwable
+     */
+    public void testN2() {
+        T_opc_throw_2 t = new T_opc_throw_2();
+        try {
+            t.run();
+            fail("must throw a Throwable");
+        } catch (Throwable e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Throwing of the objectref on the subclass of Throwable
+     */
+    public void testN3() {
+        T_opc_throw_8 t = new T_opc_throw_8();
+        try {
+            t.run();
+            fail("must throw a Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title Nearest matching catch must be executed in case of exception
+     */
+    public void testN4() {
+        T_opc_throw_12 t = new T_opc_throw_12();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title NullPointerException If objectref is null, opc_throw throws
+     * a NullPointerException instead of objectref
+     */
+    public void testE1() {
+        T_opc_throw_4 t = new T_opc_throw_4();
+        try {
+            t.run();
+            fail("expected NullPointerException");
+        } catch (NullPointerException npe) {
+            // expected
+        }
+    }
+
+    /**
+     * @title expected IllegalMonitorStateException
+     */
+    public void testE2() {
+        T_opc_throw_5 t = new T_opc_throw_5();
+        try {
+            t.run();
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title  (number of registers)
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_throw.jm.T_opc_throw_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_throw.jm.T_opc_throw_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * 
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_throw.jm.T_opc_throw_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B16 
+     * @title operand must be must be assignment-compatible 
+     * with java.lang.Throwable
+
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dxc.junit.opcodes.opc_throw.jm.T_opc_throw_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.d
new file mode 100644
index 0000000..90a4a03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_throw_1.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       new-instance v1, java/lang/RuntimeException
+       invoke-direct {v1}, java/lang/RuntimeException/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.java
new file mode 100644
index 0000000..6aa25db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_1 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.d
new file mode 100644
index 0000000..c3194bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_throw_10.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+       new-instance v1, java/lang/String
+       invoke-direct {v1}, java/lang/String/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.java
new file mode 100644
index 0000000..b57a68c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_10.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_10 {
+    
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d
new file mode 100644
index 0000000..e096f4c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_throw_12.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 2
+
+Label0:
+    invoke-direct {v1}, dot/junit/opcodes/opc_throw/d/T_opc_throw_12/test()Z
+    move-result v0
+    return v0
+Label1:
+    const v0, 0
+    return v0
+
+.catch java/lang/RuntimeException from Label0 to Label1 using Label1
+.end method
+
+
+.method private test()Z
+.limit regs 2
+Label0:
+    new-instance v0, java/lang/RuntimeException
+    invoke-direct {v0}, java/lang/RuntimeException/<init>()V
+    throw  v0
+Label1:
+    const v1, 1
+    return v1
+
+.catch java/lang/RuntimeException from Label0 to Label1 using Label1
+.end method
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.java
new file mode 100644
index 0000000..50ef212
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_12.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_12 {
+
+    public boolean run() {
+        
+        try{
+            return test();
+        } catch(RuntimeException e2) {
+        }
+        return false;
+    }
+    
+    private boolean test() {
+        try {
+            throw new RuntimeException();
+        } catch(RuntimeException e1) {
+            return true;
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.d
new file mode 100644
index 0000000..95c3657
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_throw_2.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+      return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       new-instance v1, java/lang/Throwable
+       invoke-direct {v1}, java/lang/Throwable/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.java
new file mode 100644
index 0000000..df4c62d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_2 {
+
+    public void run() throws Throwable {
+        throw new Throwable();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.d
new file mode 100644
index 0000000..7ef732a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_throw_3.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       const-wide v1, 314
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.d
new file mode 100644
index 0000000..ab5d803
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_throw_4.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/4 v1, 0
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.java
new file mode 100644
index 0000000..89c576d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_4 {
+
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d
new file mode 100644
index 0000000..4e23269
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_throw_5.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public declared_synchronized run()V
+.limit regs 6
+
+       monitor-exit v5
+
+       new-instance v1, java/lang/NullPointerException
+       invoke-direct {v1}, java/lang/NullPointerException/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.java
new file mode 100644
index 0000000..748e08c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_5 {
+
+    public synchronized void run() {
+            throw new NullPointerException();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.d
new file mode 100644
index 0000000..51ca304
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_throw_6.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       new-instance v1, java/lang/RuntimeException
+       invoke-direct {v1}, java/lang/RuntimeException/<init>()V
+       throw v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.d
new file mode 100644
index 0000000..bf85401
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_throw_7.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       const v1, 3.14
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.d
new file mode 100644
index 0000000..8b91411
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_opc_throw_8.java
+.class public dot.junit.opcodes.opc_throw.d.T_opc_throw_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       new-instance v1, java/lang/Error
+       invoke-direct {v1}, java/lang/Error/<init>()V
+       throw v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.java
new file mode 100644
index 0000000..30dc98a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_8 {
+
+    public void run() throws Error {
+        throw new Error();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_9.java
new file mode 100644
index 0000000..bd173cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/opc_throw/d/T_opc_throw_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.opc_throw.d;
+
+public class T_opc_throw_9 {
+    
+    public void run() {
+        throw new RuntimeException();
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/Test_or_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/Test_or_int.java
new file mode 100644
index 0000000..e2ebcbf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/Test_or_int.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_int.d.T_or_int_1;
+import dot.junit.opcodes.or_int.d.T_or_int_6;
+
+public class Test_or_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(15, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(0xfffffff9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(-1, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_int_6 t = new T_or_int_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_int_1 t = new T_or_int_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int.d.T_or_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int.d.T_or_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int.d.T_or_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int.d.T_or_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.d
new file mode 100644
index 0000000..bac2513
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_1.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.java
new file mode 100644
index 0000000..36da158
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int.d;
+
+public class T_or_int_1 {
+
+    public int run(int a, int b) {
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_2.d
new file mode 100644
index 0000000..9afca45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_2.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_3.d
new file mode 100644
index 0000000..cc2a413
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_3.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       or-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_4.d
new file mode 100644
index 0000000..f47f082
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_4.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)I
+.limit regs 8
+
+       or-int v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_5.d
new file mode 100644
index 0000000..65aee2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_5.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.d
new file mode 100644
index 0000000..5543c18
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_6.java
+.class public dot.junit.opcodes.or_int.d.T_or_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       or-int v0, v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.java
new file mode 100644
index 0000000..9450467
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int/d/T_or_int_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int.d;
+
+public class T_or_int_6 {
+
+    public int run(float a, int b) {
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/Test_or_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/Test_or_int_2addr.java
new file mode 100644
index 0000000..1278e42
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/Test_or_int_2addr.java
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_1;
+import dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_6;
+
+public class Test_or_int_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(15, t.run(15, 8));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(0xfffffff9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(-1, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_int_2addr_6 t = new T_or_int_2addr_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_int_2addr_1 t = new T_or_int_2addr_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.d
new file mode 100644
index 0000000..c1d6357
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_2addr_1.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.java
new file mode 100644
index 0000000..d802576
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_2addr.d;
+
+public class T_or_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.d
new file mode 100644
index 0000000..0fe271f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_2addr_2.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.d
new file mode 100644
index 0000000..f7b8de4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_2addr_3.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       or-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.d
new file mode 100644
index 0000000..c29c45a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_2addr_4.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       or-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.d
new file mode 100644
index 0000000..55c9544
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_2addr_5.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       or-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.d
new file mode 100644
index 0000000..2eb863f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_2addr_6.java
+.class public dot.junit.opcodes.or_int_2addr.d.T_or_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       or-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.java
new file mode 100644
index 0000000..271e8ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_2addr/d/T_or_int_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_2addr.d;
+
+public class T_or_int_2addr_6 {
+
+    public int run(float a, int b) {
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/Test_or_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/Test_or_int_lit16.java
new file mode 100644
index 0000000..0595a7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/Test_or_int_lit16.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_1;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_2;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_3;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_4;
+import dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_5;
+
+public class Test_or_int_lit16 extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_or_int_lit16_1 t = new T_or_int_lit16_1();
+        assertEquals(15, t.run(15));
+    }
+
+    /**
+     * @title Arguments = 0x5ff5, 0x7ff7
+     */
+    public void testN2() {
+        T_or_int_lit16_2 t = new T_or_int_lit16_2();
+        assertEquals(0x7ff7, t.run(0x5ff5));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_or_int_lit16_3 t = new T_or_int_lit16_3();
+        assertEquals(-1, t.run(0xcaf));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_int_lit16_4 t = new T_or_int_lit16_4();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_int_lit16_3 t = new T_or_int_lit16_3();
+        assertEquals(-1, t.run(0));
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE & Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_int_lit16_5 t = new T_or_int_lit16_5();
+        assertEquals(0xffffffff, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.d
new file mode 100644
index 0000000..2750eb2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit16_1.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, 8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.java
new file mode 100644
index 0000000..b9c94bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_1 {
+    
+    public int run(int a) {
+        int b = 8;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.d
new file mode 100644
index 0000000..bbddaa9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit16_2.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, 0x7ff7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.java
new file mode 100644
index 0000000..b87fd5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_2 {
+    
+    public int run(int a) {
+        int b = 0x7ff7;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.d
new file mode 100644
index 0000000..ee50f62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit16_3.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.java
new file mode 100644
index 0000000..bddbf139
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_3 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.d
new file mode 100644
index 0000000..2bc0910
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit16_4.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, 15
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.java
new file mode 100644
index 0000000..fe01a61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_4 {
+    
+    public int run(float a) {
+        int b = 15;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.d
new file mode 100644
index 0000000..a227848
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit16_5.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v7, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.java
new file mode 100644
index 0000000..f94b3aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_5 {
+    
+    public int run(int b) {
+        int a = Short.MAX_VALUE;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.d
new file mode 100644
index 0000000..539491a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit16_6.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v8, 8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.java
new file mode 100644
index 0000000..78c7732
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_6 {
+    
+    public int run(int a) {
+        int b = 8;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.d
new file mode 100644
index 0000000..1e28c75
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit16_7.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       or-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.java
new file mode 100644
index 0000000..784592a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_7 {
+    
+    public int run(double a) {
+        int b = 10;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.d
new file mode 100644
index 0000000..42150a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit16_8.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       or-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.java
new file mode 100644
index 0000000..0f65388
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_8.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_8 {
+    
+    public int run(long a) {
+        int b = 10;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.d
new file mode 100644
index 0000000..a810f2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit16_9.java
+.class public dot.junit.opcodes.or_int_lit16.d.T_or_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.java
new file mode 100644
index 0000000..96c28ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit16/d/T_or_int_lit16_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit16.d;
+
+public class T_or_int_lit16_9 {
+    
+    public int run(int a) {
+        int b = 10;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/Test_or_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/Test_or_int_lit8.java
new file mode 100644
index 0000000..a9b697c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/Test_or_int_lit8.java
@@ -0,0 +1,134 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_1;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_2;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_3;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_4;
+import dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_5;
+
+public class Test_or_int_lit8 extends DxTestCase {
+
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+        T_or_int_lit8_1 t = new T_or_int_lit8_1();
+        assertEquals(15, t.run(15));
+    }
+
+    /**
+     * @title Arguments = 0x5f, 0x7f
+     */
+    public void testN2() {
+        T_or_int_lit8_2 t = new T_or_int_lit8_2();
+        assertEquals(0x7f, t.run(0x5f));
+    }
+
+    /**
+     * @title Arguments = 0xcafe & -1
+     */
+    public void testN3() {
+        T_or_int_lit8_3 t = new T_or_int_lit8_3();
+        assertEquals(-1, t.run(0xcaf));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_int_lit8_4 t = new T_or_int_lit8_4();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_int_lit8_3 t = new T_or_int_lit8_3();
+        assertEquals(-1, t.run(0));
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE & Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_int_lit8_5 t = new T_or_int_lit8_5();
+        assertEquals(0xffffffff, t.run(Byte.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.d
new file mode 100644
index 0000000..71967f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit8_1.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, 8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.java
new file mode 100644
index 0000000..eaedd28
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_1 {
+    
+    public int run(int a) {
+        int b = 8;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.d
new file mode 100644
index 0000000..44143ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit8_2.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, 0x7f
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.java
new file mode 100644
index 0000000..3a93f0e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_2 {
+    
+    public int run(int a) {
+        int b = 0x7f;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.d
new file mode 100644
index 0000000..9039138
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit8_3.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.java
new file mode 100644
index 0000000..0c93d21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_3 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.d
new file mode 100644
index 0000000..6e07519
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit8_4.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, 15
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.java
new file mode 100644
index 0000000..83c991b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_4 {
+    
+    public int run(float a) {
+        int b = 15;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.d
new file mode 100644
index 0000000..c765b57
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit8_5.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v7, 127
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.java
new file mode 100644
index 0000000..8cc8560
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_5 {
+    
+    public int run(int a) {
+        int b = Byte.MAX_VALUE;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.d
new file mode 100644
index 0000000..3a70209
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit8_6.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.java
new file mode 100644
index 0000000..5f9478b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_6 {
+    
+    public int run(int a) {
+        int b = 10;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.d
new file mode 100644
index 0000000..8040a0e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit8_7.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       or-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.java
new file mode 100644
index 0000000..578692d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_7 {
+    
+    public int run(double a) {
+        int b = 10;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.d
new file mode 100644
index 0000000..e0b4801
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit8_8.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       or-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.java
new file mode 100644
index 0000000..a00cb27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_8.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_8 {
+    
+    public int run(long a) {
+        int b = 10;
+        return (int)a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.d
new file mode 100644
index 0000000..7e44fec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_int_lit8_9.java
+.class public dot.junit.opcodes.or_int_lit8.d.T_or_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       or-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.java
new file mode 100644
index 0000000..1a67d00
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_int_lit8/d/T_or_int_lit8_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_int_lit8.d;
+
+public class T_or_int_lit8_9 {
+    
+    public int run(int a) {
+        int b = 10;
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/Test_or_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/Test_or_long.java
new file mode 100644
index 0000000..87c351e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/Test_or_long.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_long.d.T_or_long_1;
+import dot.junit.opcodes.or_long.d.T_or_long_3;
+
+public class Test_or_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 123456789121l, 2l
+     */
+    public void testN1() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(123456789123l, t.run(123456789121l, 2l));
+    }
+
+    /**
+     * @title Arguments = 0xffffffffffffff8l, 0xffffffffffffff1l
+     */
+    public void testN2() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(0xffffffffffffff9l, t.run(0xffffffffffffff8l,
+                0xffffffffffffff1l));
+    }
+
+    /**
+     * @title Arguments = 0xabcdefabcdef & -1
+     */
+    public void testN3() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(-1l, t.run(0xabcdefabcdefl, -1l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_long_3 t = new T_or_long_3();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_long_1 t = new T_or_long_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long.d.T_or_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long.d.T_or_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long.d.T_or_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long.d.T_or_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.d
new file mode 100644
index 0000000..6bc5ef8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_long_1.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.java
new file mode 100644
index 0000000..0e565cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_long.d;
+
+public class T_or_long_1 {
+
+    public long run(long a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_2.d
new file mode 100644
index 0000000..b33694e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_long_2.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long v0, v10, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.d
new file mode 100644
index 0000000..f85ee63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_long_3.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       or-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.java
new file mode 100644
index 0000000..2a86c48
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_long.d;
+
+public class T_or_long_3 {
+
+    public long run(long a, double b) {
+        return a | (long)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_4.d
new file mode 100644
index 0000000..89337b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_long_4.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.limit regs 14
+
+       or-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_5.d
new file mode 100644
index 0000000..91fbc4d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_long_5.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.limit regs 14
+
+       or-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_6.d
new file mode 100644
index 0000000..ee5c07a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long/d/T_or_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_long_6.java
+.class public dot.junit.opcodes.or_long.d.T_or_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/Test_or_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/Test_or_long_2addr.java
new file mode 100644
index 0000000..16e34b0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/Test_or_long_2addr.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_1;
+import dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_3;
+
+public class Test_or_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 123456789121l, 2l
+     */
+    public void testN1() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(123456789123l, t.run(123456789121l, 2l));
+    }
+
+    /**
+     * @title Arguments = 0xffffffffffffff8l, 0xffffffffffffff1l
+     */
+    public void testN2() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(0xffffffffffffff9l, t.run(0xffffffffffffff8l,
+                0xffffffffffffff1l));
+    }
+
+    /**
+     * @title Arguments = 0xabcdefabcdef & -1
+     */
+    public void testN3() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(-1l, t.run(0xabcdefabcdefl, -1l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_or_long_2addr_3 t = new T_or_long_2addr_3();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_or_long_2addr_1 t = new T_or_long_2addr_1();
+        assertEquals(-1l, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.d
new file mode 100644
index 0000000..a7c4859
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_long_2addr_1.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.java
new file mode 100644
index 0000000..c82fc8a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_long_2addr.d;
+
+public class T_or_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a | b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.d
new file mode 100644
index 0000000..f7db657
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_long_2addr_2.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long/2addr v10, v14
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.d
new file mode 100644
index 0000000..5604162
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_long_2addr_3.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       or-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.java
new file mode 100644
index 0000000..98c77b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.or_long_2addr.d;
+
+public class T_or_long_2addr_3 {
+
+    public long run(long a, double b) {
+        return a | (long)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.d
new file mode 100644
index 0000000..a13b59f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_long_2addr_4.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.limit regs 14
+
+       or-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.d
new file mode 100644
index 0000000..7d7667d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_long_2addr_5.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FJ)J
+.limit regs 14
+
+       or-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.d
new file mode 100644
index 0000000..65d1c7b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/or_long_2addr/d/T_or_long_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_or_long_2addr_6.java
+.class public dot.junit.opcodes.or_long_2addr.d.T_or_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       or-long/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/Test_packed_switch.java b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/Test_packed_switch.java
new file mode 100644
index 0000000..780a490
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/Test_packed_switch.java
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.packed_switch;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.packed_switch.d.T_packed_switch_1;
+import dot.junit.opcodes.packed_switch.d.T_packed_switch_2;
+
+public class Test_packed_switch extends DxTestCase {
+
+    /**
+     * @title try different values
+     */
+    public void testN1() {
+        T_packed_switch_1 t = new T_packed_switch_1();
+        assertEquals(2, t.run(-1));
+
+        assertEquals(-1, t.run(4));
+        assertEquals(20, t.run(2));
+        assertEquals(-1, t.run(5));
+
+        assertEquals(-1, t.run(6));
+        assertEquals(20, t.run(3));
+        assertEquals(-1, t.run(7));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN2() {
+        try {
+            T_packed_switch_2 t = new T_packed_switch_2();
+            t.run(-1.23f);
+        } catch(Throwable t) {
+            
+        }
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_packed_switch_1 t = new T_packed_switch_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_packed_switch_1 t = new T_packed_switch_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_packed_switch_1 t = new T_packed_switch_1();
+        assertEquals(-1, t.run(0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A7 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A7
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint A7 
+     * @title offset to table shall be inside method
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A7
+     * @title the size and the list of targets must be consistent. 
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+    /**
+     * @constraint B22
+     * @title packed-switch-data pseudo-instructions must not be reachable by control flow 
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A7
+     * @title table has wrong ident code
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.packed_switch.d.T_packed_switch_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.d
new file mode 100644
index 0000000..bd692e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_packed_switch_1.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+       packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.java
new file mode 100644
index 0000000..4c56e14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.packed_switch.d;
+
+public class T_packed_switch_1 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.d
new file mode 100644
index 0000000..d1d2d03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_packed_switch_11.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dfh
new file mode 100644
index 0000000..451465e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dfh
@@ -0,0 +1,272 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7b3e5055
+    55 50 3E 7B 
+// parsed: offset 12, len 20: signature           : 13de...bd04
+    13 DE 7D 13 9F C2 C8 77 AF 7A EA 9B 47 76 9C 01 E5 F3 BD 04 
+// parsed: offset 32, len 4: file_size           : 608
+    60 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 472 (0x0001d8)
+    D8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 405 (0x000195) "Ljava/lang/Object;"
+    95 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 425 (0x0001a9) "T_packed_switch_11.java"
+    A9 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 450 (0x0001c2) "V"
+    C2 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 453 (0x0001c5) "run"
+    C5 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 458 (0x0001ca)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 CA 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_11.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 24
+        18 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: packed-switch v4, 0000000a //  +0x0000000a
+            2B 04 0A 00 00 00 
+        // parsed: offset 286, len 2: |0003: const/4 v2, #int -1 // #0xff
+            12 F2 
+        // parsed: offset 288, len 2: |0004: return v2
+            0F 02 
+        // parsed: offset 290, len 2: |0005: const/4 v2, #int 2 // #0x2
+            12 22 
+        // parsed: offset 292, len 2: |0006: return v2
+            0F 02 
+        // parsed: offset 294, len 4: |0007: const/16 v2, #int 20 // #0x14
+            13 02 14 00 
+        // parsed: offset 298, len 2: |0009: return v2
+            0F 02 
+        // parsed: offset 300, len 28: |000a: packed-switch-data (14 units)
+//@mod            00 01 05 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+            00 01 06 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 31 31 3B 00 
+// parsed: offset 405, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 425, len 25: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_11.java"
+    17 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 450, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 453, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_11;"
+    // parsed: offset 458, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 459, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 460, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 461, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 462, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 463, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 466, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 468, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 469, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 470, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 472, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 476, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 488, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 500, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 512, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 524, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 536, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 548, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 560, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 572, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 334 (0x00014e)
+        02 20 00 00 08 00 00 00 4E 01 00 00 
+    // parsed: offset 584, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 458 (0x0001ca)
+        00 20 00 00 01 00 00 00 CA 01 00 00 
+    // parsed: offset 596, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 472 (0x0001d8)
+        00 10 00 00 01 00 00 00 D8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.java
new file mode 100644
index 0000000..3565f3a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_11.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.packed_switch.d;
+
+public class T_packed_switch_11 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        }
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.d
new file mode 100644
index 0000000..58afb0b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_12.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 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.
+
+.source T_packed_switch_12.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       goto Label0
+
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+       packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+Label0:       
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.d
new file mode 100644
index 0000000..2e7471b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_packed_switch_13.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       goto Label0
+Label0:       
+       packed-switch v4, 0
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+       packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dfh
new file mode 100644
index 0000000..4bfcca7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_13.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 87464e10
+    10 4E 46 87 
+// parsed: offset 12, len 20: signature           : 7bca...1bb2
+    7B CA CF 83 19 C2 CE 39 ED B4 6A 93 F6 BF AF D5 3E F6 1B B2 
+// parsed: offset 32, len 4: file_size           : 608
+    60 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 472 (0x0001d8)
+    D8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 405 (0x000195) "Ljava/lang/Object;"
+    95 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 425 (0x0001a9) "T_packed_switch_13.java"
+    A9 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 450 (0x0001c2) "V"
+    C2 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 453 (0x0001c5) "run"
+    C5 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_13.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 458 (0x0001ca)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 CA 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_13.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_13.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 24
+        18 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+            28 01 
+        // parsed: offset 282, len 6: |0001: packed-switch v4, 0000000c //  +0x0000000b
+            2B 04 0B 00 00 00 
+        // parsed: offset 288, len 2: |0004: const/4 v2, #int -1 // #0xff
+            12 F2 
+        // parsed: offset 290, len 2: |0005: return v2
+            0F 02 
+        // parsed: offset 292, len 2: |0006: const/4 v2, #int 2 // #0x2
+            12 22 
+        // parsed: offset 294, len 2: |0007: return v2
+            0F 02 
+        // parsed: offset 296, len 4: |0008: const/16 v2, #int 20 // #0x14
+            13 02 14 00 
+        // parsed: offset 300, len 2: |000a: return v2
+            0F 02 
+        // parsed: offset 302, len 2: |000b: nop // spacer
+            00 00 
+        // parsed: offset 304, len 24: |000c: packed-switch-data (12 units)
+//@mod            00 01 04 00 00 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+            00 06 04 00 00 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 31 33 3B 00 
+// parsed: offset 405, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 425, len 25: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_13.java"
+    17 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 31 33 2E 6A 61 76 61 00 
+// parsed: offset 450, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 453, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_13;"
+    // parsed: offset 458, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 459, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 460, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 461, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 462, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 463, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 466, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 468, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 469, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 470, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 472, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 476, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 488, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 500, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 512, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 524, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 536, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 548, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 560, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 572, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 334 (0x00014e)
+        02 20 00 00 08 00 00 00 4E 01 00 00 
+    // parsed: offset 584, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 458 (0x0001ca)
+        00 20 00 00 01 00 00 00 CA 01 00 00 
+    // parsed: offset 596, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 472 (0x0001d8)
+        00 10 00 00 01 00 00 00 D8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.d
new file mode 100644
index 0000000..a356eb3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_packed_switch_2.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.java
new file mode 100644
index 0000000..977aea7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_2.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.packed_switch.d;
+
+public class T_packed_switch_2 {
+
+    public int run(float i) {
+        switch ((int)i) {
+        case -1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.d
new file mode 100644
index 0000000..79e9e8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_3.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_packed_switch_3.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v5, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.d
new file mode 100644
index 0000000..1c3d42b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_4.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_packed_switch_4.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 5
+       packed-switch v3, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.d
new file mode 100644
index 0000000..c648fbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_5.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_packed_switch_5.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 5
+       packed-switch v3, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.d
new file mode 100644
index 0000000..9a18602
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_6.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_packed_switch_6.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v3, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.d
new file mode 100644
index 0000000..ebf9766
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_packed_switch_7.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dfh
new file mode 100644
index 0000000..d30068e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : efe7503a
+    3A 50 E7 EF 
+// parsed: offset 12, len 20: signature           : eeec...6db9
+    EE EC 3C 7A 99 EE 9C AE 73 67 A0 02 4A 34 19 B6 D1 E8 6D B9 
+// parsed: offset 32, len 4: file_size           : 608
+    60 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 472 (0x0001d8)
+    D8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 404 (0x000194) "Ljava/lang/Object;"
+    94 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 424 (0x0001a8) "T_packed_switch_7.java"
+    A8 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 448 (0x0001c0) "V"
+    C0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 451 (0x0001c3) "run"
+    C3 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_7.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 456 (0x0001c8)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 C8 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_7.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_7.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 24
+        18 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: packed-switch v4, 0000000a //  +0x0000000a
+            2B 04 0A 00 00 00 
+        // parsed: offset 286, len 2: |0003: const/4 v2, #int -1 // #0xff
+            12 F2 
+        // parsed: offset 288, len 2: |0004: return v2
+            0F 02 
+        // parsed: offset 290, len 2: |0005: const/4 v2, #int 2 // #0x2
+            12 22 
+        // parsed: offset 292, len 2: |0006: return v2
+            0F 02 
+        // parsed: offset 294, len 4: |0007: const/16 v2, #int 20 // #0x14
+            13 02 14 00 
+        // parsed: offset 298, len 2: |0009: return v2
+            0F 02 
+        // parsed: offset 300, len 28: |000a: packed-switch-data (14 units)
+//@mod            00 01 05 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+            00 01 05 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 01 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 37 3B 00 
+// parsed: offset 404, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 424, len 24: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_7.java"
+    16 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 37 2E 6A 61 76 61 00 
+// parsed: offset 448, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 451, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_7;"
+    // parsed: offset 456, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 457, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 458, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 459, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 460, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 461, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 464, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 466, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 467, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 468, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 470, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 472, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 476, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 488, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 500, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 512, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 524, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 536, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 548, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 560, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 572, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 334 (0x00014e)
+        02 20 00 00 08 00 00 00 4E 01 00 00 
+    // parsed: offset 584, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 456 (0x0001c8)
+        00 20 00 00 01 00 00 00 C8 01 00 00 
+    // parsed: offset 596, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 472 (0x0001d8)
+        00 10 00 00 01 00 00 00 D8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.java
new file mode 100644
index 0000000..53e1806
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_7.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.packed_switch.d;
+
+public class T_packed_switch_7 {
+
+    public int run(int i) {
+        switch (i) {
+        case 1:
+            return 2;
+        case 2:
+        case 3:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.d
new file mode 100644
index 0000000..b22771c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_packed_switch_8.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+        packed-switch-end
+Label6:
+       const v2, -1
+       return v2
+Label9:
+       const v2, 2
+       return v2
+Label12:
+       const v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dfh
new file mode 100644
index 0000000..71189f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7f5c534c
+    4C 53 5C 7F 
+// parsed: offset 12, len 20: signature           : 97ca...2c6d
+    97 CA 8C F6 19 E5 9D 0D D2 A3 C8 ED 06 77 15 0E AE A8 2C 6D 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Object;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 436 (0x0001b4) "T_packed_switch_8.java"
+    B4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 460 (0x0001cc) "V"
+    CC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_8.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_8.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: packed-switch v4, 00000010 //  +0x00000010
+            2B 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v2, #float nan // #0xffffffff int
+            14 02 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v2
+            0F 02 
+        // parsed: offset 294, len 6: |0007: const v2, #float 0.000000 // #0x00000002 int
+            14 02 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v2
+            0F 02 
+        // parsed: offset 302, len 6: |000b: const v2, #float 0.000000 // #0x00000014 int
+            14 02 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v2
+            0F 02 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: packed-switch-data (14 units)
+//@mod            00 01 05 00 FF FF FF FF 07 00 00 00 03 00 00 00 03 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 01 05 00 FF FF FF FF 07 00 00 00 03 00 00 00 03 00 00 00 0B 00 00 00 0C 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 38 3B 00 
+// parsed: offset 416, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 436, len 24: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_8.java"
+    16 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 460, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_8;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 480, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 482, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.d
new file mode 100644
index 0000000..217a917
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_packed_switch_9.java
+.class public dot.junit.opcodes.packed_switch.d.T_packed_switch_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+       packed-switch v4, -1
+            Label9    ; -1
+            Label6    ; 0
+            Label6    ; 1
+            Label12    ; 2
+            Label12    ; 3
+       packed-switch-end
+Label6:
+       const/4 v2, -1
+       return v2
+Label9:
+       const/4 v2, 2
+       return v2
+Label12:
+       const/16 v2, 20
+       return v2
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dfh
new file mode 100644
index 0000000..f499745
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/packed_switch/d/T_packed_switch_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 8b9450f3
+    F3 50 94 8B 
+// parsed: offset 12, len 20: signature           : 70d9...f3d5
+    70 D9 7D E3 97 15 3F D2 B8 B5 72 A3 F9 DE 77 29 3D 5A F3 D5 
+// parsed: offset 32, len 4: file_size           : 608
+    60 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 472 (0x0001d8)
+    D8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 368
+    70 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 334 (0x00014e) "<init>"
+    4E 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 342 (0x000156) "I"
+    56 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "II"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 349 (0x00015d) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+    5D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 404 (0x000194) "Ljava/lang/Object;"
+    94 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 424 (0x0001a8) "T_packed_switch_9.java"
+    A8 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 448 (0x0001c0) "V"
+    C0 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 451 (0x0001c3) "run"
+    C3 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 328 (0x000148)
+    02 00 00 00 00 00 00 00 48 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_packed_switch_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 456 (0x0001c8)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 C8 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_9.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.packed_switch.d.T_packed_switch_9.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 24
+        18 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: packed-switch v4, 0000000a //  +0x0000000a
+//@mod            2B 04 0A 00 00 00 
+            2B 04 0A 01 00 00 
+        // parsed: offset 286, len 2: |0003: const/4 v2, #int -1 // #0xff
+            12 F2 
+        // parsed: offset 288, len 2: |0004: return v2
+            0F 02 
+        // parsed: offset 290, len 2: |0005: const/4 v2, #int 2 // #0x2
+            12 22 
+        // parsed: offset 292, len 2: |0006: return v2
+            0F 02 
+        // parsed: offset 294, len 4: |0007: const/16 v2, #int 20 // #0x14
+            13 02 14 00 
+        // parsed: offset 298, len 2: |0009: return v2
+            0F 02 
+        // parsed: offset 300, len 28: |000a: packed-switch-data (14 units)
+            00 01 05 00 FF FF FF FF 05 00 00 00 03 00 00 00 03 00 00 00 07 00 00 00 07 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 328, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 332, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 334, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 342, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 345, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 349, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 2F 64 2F 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 39 3B 00 
+// parsed: offset 404, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 424, len 24: TYPE_STRING_DATA_ITEM [5] "T_packed_switch_9.java"
+    16 54 5F 70 61 63 6B 65 64 5F 73 77 69 74 63 68 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 448, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 451, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/packed_switch/d/T_packed_switch_9;"
+    // parsed: offset 456, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 457, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 458, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 459, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 460, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 461, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 464, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 466, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 467, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 468, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 470, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 472, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 476, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 488, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 500, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 512, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 524, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 536, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 548, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 560, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 328 (0x000148)
+        01 10 00 00 01 00 00 00 48 01 00 00 
+    // parsed: offset 572, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 334 (0x00014e)
+        02 20 00 00 08 00 00 00 4E 01 00 00 
+    // parsed: offset 584, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 456 (0x0001c8)
+        00 20 00 00 01 00 00 00 C8 01 00 00 
+    // parsed: offset 596, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 472 (0x0001d8)
+        00 10 00 00 01 00 00 00 D8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/Test_rem_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/Test_rem_double.java
new file mode 100644
index 0000000..bd540d8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/Test_rem_double.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_double.d.T_rem_double_1;
+import dot.junit.opcodes.rem_double.d.T_rem_double_4;
+
+public class Test_rem_double extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(2.7d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, 2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_rem_double_4 t = new T_rem_double_4();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(-2.7d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(Double.NaN, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_rem_double_1 t = new T_rem_double_1();
+        assertEquals(0d, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, -1E-9d
+     */
+    public void testB9() {
+        T_rem_double_1 t = new T_rem_double_1();
+
+        assertEquals(1.543905285031139E-10d, t.run(Double.MAX_VALUE, -1E-9d));
+    }
+
+    /**
+     * @constraint A24
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double.d.T_rem_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double.d.T_rem_double_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double.d.T_rem_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double.d.T_rem_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.d
new file mode 100644
index 0000000..2585be4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_double_1.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.java
new file mode 100644
index 0000000..11f42f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_double.d;
+
+public class T_rem_double_1 {
+
+    public double run(double a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.d
new file mode 100644
index 0000000..bacfdfd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_double_2.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double v0, v12, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.d
new file mode 100644
index 0000000..87ce2da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_double_3.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.limit regs 14
+
+       rem-double v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.d
new file mode 100644
index 0000000..b917916
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_double_4.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 14
+
+       rem-double v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.java
new file mode 100644
index 0000000..52b842d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_double.d;
+
+public class T_rem_double_4 {
+
+    public double run(long a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.d
new file mode 100644
index 0000000..6a2a11a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_5.d
@@ -0,0 +1,18 @@
+.source T_rem_double_5.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.d
new file mode 100644
index 0000000..5cb0397
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double/d/T_rem_double_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_double_6.java
+.class public dot.junit.opcodes.rem_double.d.T_rem_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)D
+.limit regs 14
+
+       rem-double v0, v11, v13
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/Test_rem_double_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/Test_rem_double_2addr.java
new file mode 100644
index 0000000..da7b741
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/Test_rem_double_2addr.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_1;
+import dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_4;
+
+public class Test_rem_double_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(2.7d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(0d, t.run(0, 3.14d));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, 2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_rem_double_2addr_4 t = new T_rem_double_2addr_4();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB3() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7d, Double.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(-2.7d, t.run(-2.7d, Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(0d, t.run(0, -2.7d));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(Double.NaN, t.run(-2.7d, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Double.MAX_VALUE
+     */
+    public void testB8() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+        assertEquals(0d, t.run(1, Double.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, -1E-9d
+     */
+    public void testB9() {
+        T_rem_double_2addr_1 t = new T_rem_double_2addr_1();
+
+        assertEquals(1.543905285031139E-10d, t.run(Double.MAX_VALUE, -1E-9d));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.d
new file mode 100644
index 0000000..898b7db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_1.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.java
new file mode 100644
index 0000000..bf60eb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_double_2addr.d;
+
+public class T_rem_double_2addr_1 {
+    
+    public double run(double a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.d
new file mode 100644
index 0000000..923864f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_2.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double/2addr v12, v14
+       return-wide v12
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.d
new file mode 100644
index 0000000..5913c80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_3.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)D
+.limit regs 14
+
+       rem-double/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.d
new file mode 100644
index 0000000..a146daf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_4.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 14
+
+       rem-double/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.java
new file mode 100644
index 0000000..964d640
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_double_2addr.d;
+
+public class T_rem_double_2addr_4 {
+    
+    public double run(long a, double b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.d
new file mode 100644
index 0000000..92c22bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_5.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 14
+
+       rem-double/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.d
new file mode 100644
index 0000000..7ea6104
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_double_2addr/d/T_rem_double_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_rem_double_2addr_6.java
+.class public dot.junit.opcodes.rem_double_2addr.d.T_rem_double_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)D
+.limit regs 14
+
+       rem-double/2addr v11, v13
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/Test_rem_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/Test_rem_float.java
new file mode 100644
index 0000000..2955a04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/Test_rem_float.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_float.d.T_rem_float_1;
+import dot.junit.opcodes.rem_float.d.T_rem_float_6;
+
+public class Test_rem_float extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(2.7f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, 2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_rem_float_6 t = new T_rem_float_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(-2.7f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(Float.NaN, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(0f, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_rem_float_1 t = new T_rem_float_1();
+        assertEquals(7.2584893E-10f, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float.d.T_rem_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float.d.T_rem_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float.d.T_rem_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float.d.T_rem_float_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.d
new file mode 100644
index 0000000..a4edaea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_float_1.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.java
new file mode 100644
index 0000000..0c5e640
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_float.d;
+
+public class T_rem_float_1 {
+
+    public float run(float a, float b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.d
new file mode 100644
index 0000000..8ce3466
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_float_2.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.d
new file mode 100644
index 0000000..e773a12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_float_3.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.limit regs 8
+
+       rem-float v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.d
new file mode 100644
index 0000000..afde65c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_float_4.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.limit regs 8
+
+       rem-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.d
new file mode 100644
index 0000000..23740bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_float_5.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.d
new file mode 100644
index 0000000..83ac469
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_float_6.java
+.class public dot.junit.opcodes.rem_float.d.T_rem_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.limit regs 8
+
+       rem-float v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.java
new file mode 100644
index 0000000..d2592a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float/d/T_rem_float_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_float.d;
+
+public class T_rem_float_6 {
+
+    public float run(float a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/Test_rem_float_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/Test_rem_float_2addr.java
new file mode 100644
index 0000000..d0d743a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/Test_rem_float_2addr.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_1;
+import dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_6;
+
+public class Test_rem_float_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(2.7f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN2() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(0f, t.run(0, 3.14f));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN3() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, 2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_rem_float_2addr_6 t = new T_rem_float_2addr_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB3() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7f, Float.NEGATIVE_INFINITY
+     */
+    public void testB4() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(-2.7f, t.run(-2.7f, Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -2.7
+     */
+    public void testB6() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(0f, t.run(0, -2.7f));
+    }
+
+    /**
+     * @title Arguments = -2.7, 0
+     */
+    public void testB7() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(Float.NaN, t.run(-2.7f, 0));
+    }
+
+    /**
+     * @title Arguments = 1, Float.MAX_VALUE
+     */
+    public void testB8() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(0f, t.run(1, Float.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -1E-9f
+     */
+    public void testB9() {
+        T_rem_float_2addr_1 t = new T_rem_float_2addr_1();
+        assertEquals(7.2584893E-10f, t.run(Float.MAX_VALUE, -1E-9f));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.d
new file mode 100644
index 0000000..a5571e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_float_2addr_1.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.java
new file mode 100644
index 0000000..521abb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_float_2addr.d;
+
+public class T_rem_float_2addr_1 {
+    
+    public float run(float a, float b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.d
new file mode 100644
index 0000000..aef48cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_float_2addr_2.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.d
new file mode 100644
index 0000000..294652e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_float_2addr_3.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FD)F
+.limit regs 8
+
+       rem-float/2addr v5, v6
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.d
new file mode 100644
index 0000000..4c5f1f5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_float_2addr_4.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)F
+.limit regs 8
+
+       rem-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.d
new file mode 100644
index 0000000..44c82c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_float_2addr_5.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 8
+
+       rem-float/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.d
new file mode 100644
index 0000000..4957893
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_float_2addr_6.java
+.class public dot.junit.opcodes.rem_float_2addr.d.T_rem_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)F
+.limit regs 8
+
+       rem-float/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.java
new file mode 100644
index 0000000..72d01ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_float_2addr/d/T_rem_float_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_float_2addr.d;
+
+public class T_rem_float_2addr_6 {
+    
+    public float run(float a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/Test_rem_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/Test_rem_int.java
new file mode 100644
index 0000000..e355a30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/Test_rem_int.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_int.d.T_rem_int_1;
+import dot.junit.opcodes.rem_int.d.T_rem_int_6;
+
+public class Test_rem_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 1073741823, 4
+     */
+    public void testN2() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(3, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(-1, t.run(-10, 3));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(1, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(-697, t.run(-17895697, -3000));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_int_6 t = new T_rem_int_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(1, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_rem_int_1 t = new T_rem_int_1();
+        assertEquals(1, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_int_1 t = new T_rem_int_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int.d.T_rem_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int.d.T_rem_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int.d.T_rem_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int.d.T_rem_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.d
new file mode 100644
index 0000000..25a1ec5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_1.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.java
new file mode 100644
index 0000000..a24b8a6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int.d;
+
+public class T_rem_int_1 {
+
+    public int run(int a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.d
new file mode 100644
index 0000000..1fa948b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_2.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.d
new file mode 100644
index 0000000..5db617b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_3.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       rem-int v0, v5, v6
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.d
new file mode 100644
index 0000000..69aeb8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_4.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       rem-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.d
new file mode 100644
index 0000000..d3b2b76
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_5.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.d
new file mode 100644
index 0000000..032b8ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_6.java
+.class public dot.junit.opcodes.rem_int.d.T_rem_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       rem-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.java
new file mode 100644
index 0000000..074fd8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int/d/T_rem_int_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int.d;
+
+public class T_rem_int_6 {
+
+    public int run(float a, int b) {
+        return (int)a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/Test_rem_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/Test_rem_int_2addr.java
new file mode 100644
index 0000000..f45439b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/Test_rem_int_2addr.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_1;
+import dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_6;
+
+public class Test_rem_int_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 1073741823, 4
+     */
+    public void testN2() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(3, t.run(1073741823, 4));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(0, 4));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(-1, t.run(-10, 3));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(1, t.run(1073741824, -3));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(-697, t.run(-17895697, -3000));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_int_2addr_6 t = new T_rem_int_2addr_6();
+        try {
+            t.run(3.14f, 15);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, Integer.MAX_VALUE
+     */
+    public void testB4() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MAX_VALUE
+     */
+    public void testB5() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(1, t.run(1, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        assertEquals(1, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_int_2addr_1 t = new T_rem_int_2addr_1();
+        try {
+            t.run(1, 0);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.d
new file mode 100644
index 0000000..25a7fca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_2addr_1.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.java
new file mode 100644
index 0000000..d19c535
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_2addr.d;
+
+public class T_rem_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.d
new file mode 100644
index 0000000..0dee98c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_2addr_2.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.d
new file mode 100644
index 0000000..b76a76a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_2addr_3.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(ID)I
+.limit regs 8
+
+       rem-int/2addr v5, v6
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.d
new file mode 100644
index 0000000..e3828d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_2addr_4.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       rem-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.d
new file mode 100644
index 0000000..d684c92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_2addr_5.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       rem-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.d
new file mode 100644
index 0000000..0e5825c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_2addr_6.java
+.class public dot.junit.opcodes.rem_int_2addr.d.T_rem_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)I
+.limit regs 8
+
+       rem-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.java
new file mode 100644
index 0000000..9508f97
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_2addr/d/T_rem_int_2addr_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_2addr.d;
+
+public class T_rem_int_2addr_6 {
+
+    public int run(float a, int b) {
+        return (int)a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/Test_rem_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/Test_rem_int_lit16.java
new file mode 100644
index 0000000..3449f86
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/Test_rem_int_lit16.java
@@ -0,0 +1,207 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_1;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_2;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_3;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_4;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_5;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_6;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_7;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_8;
+import dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_9;
+
+public class Test_rem_int_lit16 extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_rem_int_lit16_1 t = new T_rem_int_lit16_1();
+        assertEquals(0, t.run(8));
+    }
+
+    /**
+     * @title Arguments = 10737, 4
+     */
+    public void testN2() {
+        T_rem_int_lit16_1 t = new T_rem_int_lit16_1();
+        assertEquals(1, t.run(10737));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_int_lit16_1 t = new T_rem_int_lit16_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_int_lit16_1 t = new T_rem_int_lit16_1();
+        assertEquals(-2, t.run(-10));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_int_lit16_2 t = new T_rem_int_lit16_2();
+        assertEquals(1, t.run(22222));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_int_lit16_3 t = new T_rem_int_lit16_3();
+        assertEquals(-2235, t.run(-23235));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_int_lit16_4 t = new T_rem_int_lit16_4();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_rem_int_lit16_5 t = new T_rem_int_lit16_5();
+        assertEquals(0, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_rem_int_lit16_6 t = new T_rem_int_lit16_6();
+        assertEquals(0, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Short.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_rem_int_lit16_6 t = new T_rem_int_lit16_6();
+        assertEquals(0, t.run(Short.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE, 32767
+     */
+    public void testB4() {
+        T_rem_int_lit16_7 t = new T_rem_int_lit16_7();
+        assertEquals(-1, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, 32767
+     */
+    public void testB5() {
+        T_rem_int_lit16_7 t = new T_rem_int_lit16_7();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Arguments = 1, -32768
+     */
+    public void testB6() {
+        T_rem_int_lit16_8 t = new T_rem_int_lit16_8();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_int_lit16_9 t = new T_rem_int_lit16_9();
+        try {
+            t.run(1);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.d
new file mode 100644
index 0000000..84c49ed
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit16_1.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.java
new file mode 100644
index 0000000..75963ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_1 {
+    
+    public int run(int a) {
+        int b = 4;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.d
new file mode 100644
index 0000000..4cd1fe6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit16_10.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.d
new file mode 100644
index 0000000..a5d81e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit16_11.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       rem-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.d
new file mode 100644
index 0000000..80cab63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit16_12.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       rem-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.d
new file mode 100644
index 0000000..2e40ee6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_13.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit16_13.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.d
new file mode 100644
index 0000000..ebba20d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit16_2.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, -3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.java
new file mode 100644
index 0000000..7f40e12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_2 {
+    
+    public int run(int a) {
+        int b = -3;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.d
new file mode 100644
index 0000000..0b65731
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit16_3.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, -3000
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.java
new file mode 100644
index 0000000..ffd9b90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_3 {
+    
+    public int run(int a) {
+        int b = -3000;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.d
new file mode 100644
index 0000000..9b96729
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit16_4.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 15
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.java
new file mode 100644
index 0000000..759ed42
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_4 {
+    
+    public int run(float a) {
+        int b = 15;
+        return (int)a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.d
new file mode 100644
index 0000000..96218a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit16_5.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.java
new file mode 100644
index 0000000..7dd4dfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_5 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.d
new file mode 100644
index 0000000..9139eec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit16_6.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.java
new file mode 100644
index 0000000..d59e8a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_6 {
+    
+    public int run(int a) {
+        int b = 1;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.d
new file mode 100644
index 0000000..9970a21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit16_7.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.java
new file mode 100644
index 0000000..215598b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_7 {
+    
+    public int run(int a) {
+        int b = 32767;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.d
new file mode 100644
index 0000000..aa2208b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit16_8.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, -32768
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.java
new file mode 100644
index 0000000..77a94a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_8.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_8 {
+    
+    public int run(int a) {
+        int b = -32768;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.d
new file mode 100644
index 0000000..91c45f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit16_9.java
+.class public dot.junit.opcodes.rem_int_lit16.d.T_rem_int_lit16_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit16 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.java
new file mode 100644
index 0000000..6c6d3cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit16/d/T_rem_int_lit16_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit16.d;
+
+public class T_rem_int_lit16_9 {
+    
+    public int run(int a) {
+        int b = 0;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/Test_rem_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/Test_rem_int_lit8.java
new file mode 100644
index 0000000..ffeeb40
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/Test_rem_int_lit8.java
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_1;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_2;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_3;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_4;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_5;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_6;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_7;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_8;
+import dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_9;
+
+public class Test_rem_int_lit8 extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_rem_int_lit8_1 t = new T_rem_int_lit8_1();
+        assertEquals(0, t.run(8));
+    }
+
+    /**
+     * @title Arguments = 123, 4
+     */
+    public void testN2() {
+        T_rem_int_lit8_1 t = new T_rem_int_lit8_1();
+        assertEquals(3, t.run(123));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_int_lit8_1 t = new T_rem_int_lit8_1();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_int_lit8_1 t = new T_rem_int_lit8_1();
+        assertEquals(-2, t.run(-10));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_int_lit8_2 t = new T_rem_int_lit8_2();
+        assertEquals(0, t.run(123));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_int_lit8_3 t = new T_rem_int_lit8_3();
+        assertEquals(-3, t.run(-123));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_int_lit8_4 t = new T_rem_int_lit8_4();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Byte.MIN_VALUE, -1
+     */
+    public void testB1() {
+        T_rem_int_lit8_5 t = new T_rem_int_lit8_5();
+        assertEquals(0, t.run(Byte.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Byte.MIN_VALUE, 1
+     */
+    public void testB2() {
+        T_rem_int_lit8_6 t = new T_rem_int_lit8_6();
+        assertEquals(0, t.run(Byte.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Byte.MAX_VALUE, 1
+     */
+    public void testB3() {
+        T_rem_int_lit8_6 t = new T_rem_int_lit8_6();
+        assertEquals(0, t.run(Byte.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Short.MIN_VALUE, 127
+     */
+    public void testB4() {
+        T_rem_int_lit8_7 t = new T_rem_int_lit8_7();
+        assertEquals(-2, t.run(Short.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1, 127
+     */
+    public void testB5() {
+        T_rem_int_lit8_7 t = new T_rem_int_lit8_7();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Arguments = 1, -128
+     */
+    public void testB6() {
+        T_rem_int_lit8_8 t = new T_rem_int_lit8_8();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_int_lit8_9 t = new T_rem_int_lit8_9();
+        try {
+            t.run(1);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.d
new file mode 100644
index 0000000..7d69475
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit8_1.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 4
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.java
new file mode 100644
index 0000000..bf0f39d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_1 {
+
+    public int run(int a) {
+        int b = 4;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.d
new file mode 100644
index 0000000..15ce8db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit8_10.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v8, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.d
new file mode 100644
index 0000000..9fb2f77
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit8_11.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       rem-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.d
new file mode 100644
index 0000000..cc7cd5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit8_12.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       rem-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.d
new file mode 100644
index 0000000..c35575e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_13.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit8_13.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v6, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.d
new file mode 100644
index 0000000..4887086
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit8_2.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, -3
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.java
new file mode 100644
index 0000000..3c05ec4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_2 {
+
+    public int run(int a) {
+        int b = -3;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.d
new file mode 100644
index 0000000..43413ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit8_3.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, -120
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.java
new file mode 100644
index 0000000..7e97956
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_3 {
+
+    public int run(int a) {
+        int b = -120;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.d
new file mode 100644
index 0000000..48cd590
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit8_4.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.java
new file mode 100644
index 0000000..431ee77
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_4 {
+
+    public int run(float a) {
+        int b = 10;
+        return (int)a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.d
new file mode 100644
index 0000000..ec86de1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit8_5.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.java
new file mode 100644
index 0000000..c02f3e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_5 {
+
+    public int run(int a) {
+        int b = -1;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.d
new file mode 100644
index 0000000..8300e22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit8_6.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.java
new file mode 100644
index 0000000..92ad4d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_6 {
+
+    public int run(int a) {
+        int b = 1;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.d
new file mode 100644
index 0000000..b1eeb15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit8_7.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 127
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.java
new file mode 100644
index 0000000..b4369d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_7 {
+
+    public int run(int a) {
+        int b = 127;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.d
new file mode 100644
index 0000000..08b0729
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit8_8.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, -128
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.java
new file mode 100644
index 0000000..f28f470
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_8.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_8 {
+
+    public int run(int a) {
+        int b = -128;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.d
new file mode 100644
index 0000000..3c28049
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_int_lit8_9.java
+.class public dot.junit.opcodes.rem_int_lit8.d.T_rem_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       rem-int/lit8 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.java
new file mode 100644
index 0000000..5368944
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_int_lit8/d/T_rem_int_lit8_9.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_int_lit8.d;
+
+public class T_rem_int_lit8_9 {
+
+    public int run(int a) {
+        int b = 0;
+        return a%b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/Test_rem_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/Test_rem_long.java
new file mode 100644
index 0000000..271cd75
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/Test_rem_long.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_long.d.T_rem_long_1;
+import dot.junit.opcodes.rem_long.d.T_rem_long_3;
+
+public class Test_rem_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 10000000000l, 4000000000l
+     */
+    public void testN1() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(2000000000l, t.run(10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Arguments = 1234567890123l, 123456789l
+     */
+    public void testN2() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(123l, t.run(1234567890123l, 123456789l));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(0l, t.run(0l, 1234567890123l));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(2000000000l, t.run(10000000000l, -4000000000l));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, -4000000000l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_long_3 t = new T_rem_long_3();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1l
+     */
+    public void testB1() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB2() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1l
+     */
+    public void testB3() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(-1l, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1l, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(1l, t.run(1l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1l, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_rem_long_1 t = new T_rem_long_1();
+        assertEquals(1l, t.run(1l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_long_1 t = new T_rem_long_1();
+        try {
+            t.run(1234567890123l, 0l);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long.d.T_rem_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long.d.T_rem_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long.d.T_rem_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long.d.T_rem_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.d
new file mode 100644
index 0000000..37cfd4d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_long_1.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.java
new file mode 100644
index 0000000..34e776a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_long.d;
+
+public class T_rem_long_1 {
+
+    public long run(long a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.d
new file mode 100644
index 0000000..867c397
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_long_2.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long v0, v12, v14
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.d
new file mode 100644
index 0000000..05b4c51
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_long_3.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       rem-long v0, v10, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.java
new file mode 100644
index 0000000..33c00a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_long.d;
+
+public class T_rem_long_3 {
+
+    public long run(long a, double b) {
+        return a % (long)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.d
new file mode 100644
index 0000000..165258a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_long_4.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.limit regs 14
+
+       rem-long v0, v11, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.d
new file mode 100644
index 0000000..ab089c08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_long_5.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)J
+.limit regs 14
+
+       rem-long v0, v11, v13
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.d
new file mode 100644
index 0000000..eb64800
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long/d/T_rem_long_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_long_6.java
+.class public dot.junit.opcodes.rem_long.d.T_rem_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long v0, v9, v12
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/Test_rem_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/Test_rem_long_2addr.java
new file mode 100644
index 0000000..e32f69c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/Test_rem_long_2addr.java
@@ -0,0 +1,201 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_1;
+import dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_3;
+
+public class Test_rem_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 10000000000l, 4000000000l
+     */
+    public void testN1() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(2000000000l, t.run(10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Arguments = 1234567890123l, 123456789l
+     */
+    public void testN2() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(123l, t.run(1234567890123l, 123456789l));
+    }
+
+    /**
+     * @title Dividend = 0
+     */
+    public void testN3() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(0l, t.run(0l, 1234567890123l));
+    }
+
+    /**
+     * @title Dividend is negative
+     */
+    public void testN4() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, 4000000000l));
+    }
+
+    /**
+     * @title Divisor is negative
+     */
+    public void testN5() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(2000000000l, t.run(10000000000l, -4000000000l));
+    }
+
+    /**
+     * @title Both Dividend and divisor are negative
+     */
+    public void testN6() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(-2000000000l, t.run(-10000000000l, -4000000000l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_rem_long_2addr_3 t = new T_rem_long_2addr_3();
+        try {
+            t.run(500000l, 1.05d);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, -1l
+     */
+    public void testB1() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB2() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, 1l
+     */
+    public void testB3() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, Long.MAX_VALUE
+     */
+    public void testB4() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(-1l, t.run(Long.MIN_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1l, Long.MAX_VALUE
+     */
+    public void testB5() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(1l, t.run(1l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1l, Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        assertEquals(1l, t.run(1l, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Divisor is 0
+     */
+    public void testE1() {
+        T_rem_long_2addr_1 t = new T_rem_long_2addr_1();
+        try {
+            t.run(1234567890123l, 0l);
+            fail("expected ArithmeticException");
+        } catch (ArithmeticException ae) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  (types of arguments - int, long).
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.d
new file mode 100644
index 0000000..83c111e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_long_2addr_1.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.java
new file mode 100644
index 0000000..197ce60
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_long_2addr.d;
+
+public class T_rem_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a % b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.d
new file mode 100644
index 0000000..79c9750
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_long_2addr_2.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long/2addr v12, v14
+       return-wide v12
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.d
new file mode 100644
index 0000000..4f62b19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_long_2addr_3.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 14
+
+       rem-long/2addr v10, v12
+       return-wide v10
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.java
new file mode 100644
index 0000000..f86c707
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rem_long_2addr.d;
+
+public class T_rem_long_2addr_3 {
+
+    public long run(long a, double b) {
+        return a % (long)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.d
new file mode 100644
index 0000000..2d0d1c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_long_2addr_4.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)J
+.limit regs 14
+
+       rem-long/2addr v11, v12
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.d
new file mode 100644
index 0000000..7d4ed96
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_long_2addr_5.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JF)J
+.limit regs 14
+
+       rem-long/2addr v11, v13
+       return-wide v11
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.d
new file mode 100644
index 0000000..8952ae1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rem_long_2addr/d/T_rem_long_2addr_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rem_long_2addr_6.java
+.class public dot.junit.opcodes.rem_long_2addr.d.T_rem_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 14
+
+       rem-long/2addr v9, v12
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/Runner.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/Runner.java
new file mode 100644
index 0000000..a2610ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/Runner.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_object;
+
+public interface Runner {
+    public void doit();
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/RunnerGenerator.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/RunnerGenerator.java
new file mode 100644
index 0000000..04644d7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/RunnerGenerator.java
@@ -0,0 +1,21 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_object;
+
+public interface RunnerGenerator {
+    public Runner run();
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/Test_return_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/Test_return_object.java
new file mode 100644
index 0000000..9336829
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/Test_return_object.java
@@ -0,0 +1,222 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.return_object.d.T_return_object_1;
+import dot.junit.opcodes.return_object.d.T_return_object_12;
+import dot.junit.opcodes.return_object.d.T_return_object_13;
+import dot.junit.opcodes.return_object.d.T_return_object_2;
+import dot.junit.opcodes.return_object.d.T_return_object_6;
+import dot.junit.opcodes.return_object.d.T_return_object_8;
+
+
+public class Test_return_object extends DxTestCase {
+    /**
+     * @title simple
+     */
+    public void testN1() {
+        T_return_object_1 t = new T_return_object_1();
+        assertEquals("hello", t.run());
+    }
+
+    /**
+     * @title simple
+     */
+    public void testN2() {
+        T_return_object_1 t = new T_return_object_1();
+        assertEquals(t, t.run2());
+    }
+
+    /**
+     * @title return null
+     */
+    public void testN4() {
+        T_return_object_2 t = new T_return_object_2();
+        assertNull(t.run());
+    }
+
+    /**
+     * @title check that frames are discarded and reinstananted correctly
+     */
+    public void testN5() {
+        T_return_object_6 t = new T_return_object_6();
+        assertEquals("hello", t.run());
+    }
+
+
+    /**
+     * @title assignment compatibility (TChild returned as TSuper)
+     */
+    public void testN7() {
+        //@uses dot.junit.opcodes.return_object.d.T_return_object_12
+        //@uses dot.junit.opcodes.return_object.d.TChild
+        //@uses dot.junit.opcodes.return_object.d.TSuper
+        //@uses dot.junit.opcodes.return_object.d.TInterface
+        T_return_object_12 t = new T_return_object_12();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title assignment compatibility (TChild returned as TInterface)
+     */
+    public void testN8() {
+        //@uses dot.junit.opcodes.return_object.d.T_return_object_13
+        //@uses dot.junit.opcodes.return_object.d.TChild
+        //@uses dot.junit.opcodes.return_object.d.TSuper
+        //@uses dot.junit.opcodes.return_object.d.TInterface
+        T_return_object_13 t = new T_return_object_13();
+        assertTrue(t.run());
+    }
+
+    /**
+     * @title Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_return_object_8 t = new T_return_object_8();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B11 
+     * @title method's return type - void
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - float
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B11 
+     * @title method's return type - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+  
+    /**
+     * @constraint B1 
+     * @title types of argument - int
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of argument - long
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title assignment incompatible references
+     */
+    public void testVFE8() {
+        //@uses dot.junit.opcodes.return_object.d.T_return_object_14
+        //@uses dot.junit.opcodes.return_object.d.TChild
+        //@uses dot.junit.opcodes.return_object.d.TSuper
+        //@uses dot.junit.opcodes.return_object.d.TInterface
+        try {
+            Class.forName("dxc.junit.opcodes.return_object.jm.T_return_object_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title assignment incompatible references
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.return_object.d.T_return_object_15
+        //@uses dot.junit.opcodes.return_object.Runner
+        //@uses dot.junit.opcodes.return_object.RunnerGenerator
+        //@uses dot.junit.opcodes.return_object.d.TSuper2
+        try {
+            RunnerGenerator rg = (RunnerGenerator) Class.forName(
+                    "dot.junit.opcodes.return_object.d.T_return_object_15").newInstance();
+            Runner r = rg.run();
+            assertFalse(r instanceof Runner);
+            assertFalse(Runner.class.isAssignableFrom(r.getClass()));
+            // only upon invocation of a concrete method,
+            // a java.lang.IncompatibleClassChangeError is thrown
+            r.doit();
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.d
new file mode 100644
index 0000000..b537c47
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.d
@@ -0,0 +1,40 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_1.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 3
+
+       const-string v1, "hello"
+       return-object v1
+.end method
+
+.method public run2()Ljava/lang/Object;
+.limit regs 3
+       return-object v2
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.java
new file mode 100644
index 0000000..ce9aed3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_1.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_object.d;
+
+public class T_return_object_1 {
+
+    public String run() {
+        return "hello";
+    }
+    
+    public Object run2() {
+        return this;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_10.d
new file mode 100644
index 0000000..66e762a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_10.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_10.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       const v1, 123
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_11.d
new file mode 100644
index 0000000..c632133
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_11.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       const-wide v1, 123
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.d
new file mode 100644
index 0000000..ea4c11a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.d
@@ -0,0 +1,43 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_12.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()Ldot/junit/opcodes/return_object/d/TSuper;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/return_object/d/TChild
+       invoke-direct {v1}, dot/junit/opcodes/return_object/d/TChild/<init>()V
+       return-object v1
+.end method
+
+.method public run()Z
+.limit regs 4
+
+       invoke-direct {v3}, dot/junit/opcodes/return_object/d/T_return_object_12/test()Ldot/junit/opcodes/return_object/d/TSuper;
+       move-result-object v2
+       instance-of v0, v2, dot/junit/opcodes/return_object/d/TChild
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.java
new file mode 100644
index 0000000..9040acc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_12.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_object.d;
+
+
+public class T_return_object_12 {
+    
+    private TSuper test() {
+        return new TChild();
+    }
+    
+    public boolean run() {
+        TSuper t = test();
+        return (t instanceof TChild);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.d
new file mode 100644
index 0000000..4cae4ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_13.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()Ldot/junit/opcodes/return_object/d/TInterface;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/return_object/d/TChild
+       invoke-direct {v1}, dot/junit/opcodes/return_object/d/TChild/<init>()V
+       return-object v1
+.end method
+
+.method public run()Z
+.limit regs 4
+Label0:
+
+       invoke-direct {v3}, dot/junit/opcodes/return_object/d/T_return_object_13/test()Ldot/junit/opcodes/return_object/d/TInterface;
+       move-result-object v2
+       instance-of v2, v2, dot/junit/opcodes/return_object/d/TChild
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.java
new file mode 100644
index 0000000..cb180d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_13.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_object.d;
+
+
+public class T_return_object_13 {
+    
+    private TInterface test() {
+        return new TChild();
+    }
+    
+    public boolean run() {
+        TInterface t = test();
+        return (t instanceof TChild);
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_14.d
new file mode 100644
index 0000000..cff2b12
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_14.d
@@ -0,0 +1,49 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_14.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_14
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private test()Ldot/junit/opcodes/return_object/d/TChild;
+.limit regs 6
+
+    new-instance v0, dot/junit/opcodes/return_object/d/TSuper
+    invoke-direct {v0}, dot/junit/opcodes/return_object/d/TSuper/<init>()V
+
+    return-object v0
+.end method
+
+
+.method public run()Z
+.limit regs 6
+
+    invoke-direct {v5}, dot/junit/opcodes/return_object/d/T_return_object_14/test()Ldot/junit/opcodes/return_object/d/TChild;
+    move-result-object v1
+
+    instance-of v0, v1, dot/junit/opcodes/return_object/d/TChild
+
+    return v0
+
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_15.d
new file mode 100644
index 0000000..29377fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_15.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_15.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_15
+.super java/lang/Object
+.implements dot/junit/opcodes/return_object/RunnerGenerator
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ldot/junit/opcodes/return_object/Runner;
+.limit regs 5
+
+       new-instance v1, dot/junit/opcodes/return_object/d/TSuper2
+       invoke-direct {v1}, dot/junit/opcodes/return_object/d/TSuper2/<init>()V
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_16.d
new file mode 100644
index 0000000..0b8dc5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_16.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_16.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_16
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+      return-object v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.d
new file mode 100644
index 0000000..f892233
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_2.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       const/4 v1, 0
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.java
new file mode 100644
index 0000000..916dcdd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_object.d;
+
+public class T_return_object_2 {
+
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_3.d
new file mode 100644
index 0000000..089fde7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_3.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       return-object v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_4.d
new file mode 100644
index 0000000..9b30169
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_4.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()F
+.limit regs 3
+
+      const v2, 3.14    
+      return-object v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_5.d
new file mode 100644
index 0000000..db9df1b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_5.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+      return-object v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.d
new file mode 100644
index 0000000..582bd74
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.d
@@ -0,0 +1,64 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_6.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private static test()Ljava/lang/String;
+.limit regs 5
+
+       const-string v0, "aaa"
+       const-string v1, "bbb"
+       const-string v2, "ccc"
+       const-string v3, "ddd"
+       return-object v3
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 10
+       const-string v1, "a"
+       const-string v2, "b"
+       const-string v3, "c"
+       invoke-static {}, dot/junit/opcodes/return_object/d/T_return_object_6/test()Ljava/lang/String;
+       move-result-object v7
+
+       const-string v8, "ddd"
+       if-ne v7, v8, Label43
+
+       const-string v7, "a"
+       if-ne v1, v7, Label43
+
+       const-string v7, "b"
+       if-ne v2, v7, Label43
+
+       const-string v7, "c"
+       if-ne v3, v7, Label43
+
+       const-string v0, "hello"
+       return-object v0
+Label43:
+       const-string v0, "a"
+       return-object v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.java
new file mode 100644
index 0000000..05cd845
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_6.java
@@ -0,0 +1,31 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_object.d;
+
+public class T_return_object_6 {
+
+    public String run() {
+        return "hello";
+    }
+    
+    private static String test() {
+        String a = "aaa";
+        String b = "bbb";
+        String c = "ccc";
+        return "ddd";
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.d
new file mode 100644
index 0000000..bc2f85f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 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.
+
+.source T_return_object_8.java
+.class public dot.junit.opcodes.return_object.d.T_return_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private declared_synchronized test()Ljava/lang/String;
+.limit regs 4
+ 
+    monitor-exit v3
+    const-string v0, "abc"
+    return-object v0
+.end method
+
+.method public run()Z
+.limit regs 3
+
+    invoke-direct {v2}, dot/junit/opcodes/return_object/d/T_return_object_8/test()Ljava/lang/String;
+
+    const v0, 1
+    return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.java
new file mode 100644
index 0000000..65fb8e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/T_return_object_8.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_object.d;
+
+public class T_return_object_8 {
+    
+    private synchronized String test() {
+        return "abc";
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.d
new file mode 100644
index 0000000..44f819f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TestStubs.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 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.
+
+.source TestStubs.java
+.interface dot.junit.opcodes.return_object.d.TInterface
+
+.source TestStubs.java
+.class dot.junit.opcodes.return_object.d.TSuper 
+.super java/lang/Object
+.implements dot.junit.opcodes.return_object.d.TInterface 
+    
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.source TestStubs.java
+.class dot.junit.opcodes.return_object.d.TChild 
+.super dot.junit.opcodes.return_object.d.TSuper 
+    
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, dot/junit/opcodes/return_object/d/TSuper/<init>()V
+       return-void
+.end method
+
+.source TestStubs.java
+.class dot.junit.opcodes.return_object.d.TSuper2
+.super java/lang/Object
+ 
+    
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.source TestStubs.java
+.class dot.junit.opcodes.return_object.d.TestStubs 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TetsStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TetsStubs.java
new file mode 100644
index 0000000..575ec0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_object/d/TetsStubs.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_object.d;
+
+
+interface TInterface{
+    
+}
+
+class TSuper implements TInterface {
+    
+}
+
+class TChild extends TSuper {
+    
+}
+
+class TSuper2 {
+    
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/Test_return_void.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/Test_return_void.java
new file mode 100644
index 0000000..e5903e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/Test_return_void.java
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_void;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.return_void.d.T_return_void_1;
+import dot.junit.opcodes.return_void.d.T_return_void_3;
+
+public class Test_return_void extends DxTestCase {
+    /**
+     * @title check that frames are discarded and reinstananted correctly
+     */
+    public void testN1() {
+        T_return_void_1 t = new T_return_void_1();
+        assertEquals(123456, t.run());
+    }
+
+
+    /**
+     * @title Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_return_void_3 t = new T_return_void_3();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint B11 
+     * @title method's return type - int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.return_void.d.T_return_void_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.return_void.d.T_return_void_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - wide
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.return_void.d.T_return_void_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.d
new file mode 100644
index 0000000..739e288
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.d
@@ -0,0 +1,65 @@
+; Copyright (C) 2008 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.
+
+.source T_return_void_1.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    const v1, 1
+    const v2, 2
+    const v3, 3
+        
+    invoke-static {}, dot/junit/opcodes/return_void/d/T_return_void_1/test()V
+
+    const v4, 1    
+    if-ne v1, v4, Label0
+    
+    const v4, 2    
+    if-ne v2, v4, Label0
+
+    const v4, 3
+    if-ne v3, v4, Label0
+    
+    const v0, 123456
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method private static test()V
+.limit regs 5
+    
+    const v0, 9999
+    const v1, 0xaaa
+    const v2, 0xbbbb
+    const v3, 0xcccc
+    const v4, 0xdddd
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.java
new file mode 100644
index 0000000..60615c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_void.d;
+
+public class T_return_void_1 {
+
+    public int run() {
+        test();
+        return 123456;
+    }
+    
+    private static void test() {
+        int a = 0xaaaa;
+        int b = 0xbbbb;
+        int c = 0xcccc;
+        return;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.d
new file mode 100644
index 0000000..ff12b06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.d
@@ -0,0 +1,44 @@
+; Copyright (C) 2008 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.
+
+.source T_return_void_3.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private declared_synchronized test()V
+.limit regs 1
+
+    monitor-exit v0
+    return-void
+.end method
+
+
+
+.method public run()Z
+.limit regs 1
+
+    invoke-direct {v0}, dot/junit/opcodes/return_void/d/T_return_void_3/test()V
+
+    const v0, 1
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.java
new file mode 100644
index 0000000..de9cb3a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_3.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_void.d;
+
+public class T_return_void_3 {
+    
+    private synchronized void test() {
+        return;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_5.d
new file mode 100644
index 0000000..172f5d0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_return_void_5.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_6.d
new file mode 100644
index 0000000..001e8b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_return_void_6.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 6
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_7.d
new file mode 100644
index 0000000..3aee8df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_void/d/T_return_void_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_return_void_7.java
+.class public dot.junit.opcodes.return_void.d.T_return_void_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 6
+    
+    return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/Test_return_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/Test_return_wide.java
new file mode 100644
index 0000000..c97f0d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/Test_return_wide.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.return_wide.d.T_return_wide_1;
+import dot.junit.opcodes.return_wide.d.T_return_wide_3;
+
+public class Test_return_wide extends DxTestCase {
+    /**
+     * @title check that frames are discarded and reinstananted correctly
+     */
+    public void testN1() {
+        T_return_wide_1 t = new T_return_wide_1();
+        assertEquals(123456, t.run());
+    }
+
+    /**
+     * @title Method is synchronized but thread is not monitor owner
+     */
+    public void testE1() {
+        T_return_wide_3 t = new T_return_wide_3();
+        try {
+            assertTrue(t.run());
+            fail("expected IllegalMonitorStateException");
+        } catch (IllegalMonitorStateException imse) {
+            // expected
+        }
+    }
+
+
+    /**
+     * @constraint B11 
+     * @title method's return type - int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.return_wide.d.T_return_wide_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B11 
+     * @title method's return type - reference
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.return_wide.d.T_return_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.return_wide.d.T_return_wide_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title return-wide on single-width register
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.return_wide.d.T_return_wide_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.d
new file mode 100644
index 0000000..57ffaf3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.d
@@ -0,0 +1,71 @@
+; Copyright (C) 2008 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.
+
+.source T_return_wide_1.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 10
+    
+    const v1, 1
+    const v2, 2
+    const v3, 3
+    
+    const-wide v4, 0xdddd
+        
+    invoke-static {}, dot/junit/opcodes/return_wide/d/T_return_wide_1/test()J
+    move-result-wide v6
+    
+    cmp-long v0, v4, v6
+    if-nez v0, Label0
+
+    const v4, 1    
+    if-ne v1, v4, Label0
+    
+    const v4, 2    
+    if-ne v2, v4, Label0
+
+    const v4, 3
+    if-ne v3, v4, Label0
+    
+    const v0, 123456
+    return v0
+
+Label0:
+    const v0, 0
+    return v0
+.end method
+
+.method private static test()J
+.limit regs 6
+    
+    const v0, 9999
+    const v1, 0xaaa
+    const v2, 0xbbbb
+    const v3, 0xcccc
+    
+    const-wide v4, 0xdddd
+    return-wide v4
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.java
new file mode 100644
index 0000000..a96cbef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_wide.d;
+
+public class T_return_wide_1 {
+
+    public int run() {
+        test();
+        return 123456;
+    }
+    
+    private static long test() {
+        int a = 0xaaaa;
+        int b = 0xbbbb;
+        int c = 0xcccc;
+        return 1l;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d
new file mode 100644
index 0000000..1a6fdb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 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.
+
+.source T_return_wide_3.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method private declared_synchronized test()D
+.limit regs 4
+
+    monitor-exit v3
+    const-wide v0, 1.0
+    return-wide v0
+.end method
+
+
+
+.method public run()Z
+.limit regs 1
+
+    invoke-direct {v0}, dot/junit/opcodes/return_wide/d/T_return_wide_3/test()D
+
+    const v0, 1
+    return v0
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.java
new file mode 100644
index 0000000..b0bae67
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_3.java
@@ -0,0 +1,30 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.return_wide.d;
+
+public class T_return_wide_3 {
+    
+    private synchronized long test() {
+        return 1;
+    }
+    
+    public boolean run() {
+        test();
+        return true;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.d
new file mode 100644
index 0000000..692ac2b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_return_wide_5.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 6
+    
+    const v0, 1
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.d
new file mode 100644
index 0000000..3360ab7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_return_wide_6.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 6
+    
+    const-wide v0, 1
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.d
new file mode 100644
index 0000000..0363fcc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_return_wide_7.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 6
+    
+    return-wide v6
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.d
new file mode 100644
index 0000000..be64ae1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/return_wide/d/T_return_wide_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_return_wide_8.java
+.class public dot.junit.opcodes.return_wide.d.T_return_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 6
+    
+    const v0, 0
+    const v1, 0
+    return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/Test_rsub_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/Test_rsub_int.java
new file mode 100644
index 0000000..bb63e7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/Test_rsub_int.java
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_1;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_2;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_3;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_4;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_5;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_6;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_7;
+import dot.junit.opcodes.rsub_int.d.T_rsub_int_12;
+
+public class Test_rsub_int extends DxTestCase {
+
+    /**
+     * @title normal test - check different values
+     */
+    public void testN1() {
+        T_rsub_int_1 t = new T_rsub_int_1();
+        assertEquals("Subtest_1 is failed", -4, t.run(8));
+        assertEquals("Subtest_2 is failed",45, t.run1(15));
+        assertEquals("Subtest_3 is failed",0, t.run2(20));
+        assertEquals("Subtest_4 is failed",-35, t.run3(10));
+        assertEquals("Subtest_5 is failed",-20, t.run4(-50));
+        assertEquals("Subtest_6 is failed",20, t.run5(-70));
+    }
+
+    /**
+     * @title normal test - check different values
+     */
+    public void testN2() {
+        T_rsub_int_2 t = new T_rsub_int_2();
+        assertEquals("Subtest_1 is failed",255, t.run(0));
+        assertEquals("Subtest_2 is failed",-32768, t.run1(0));
+        assertEquals("Subtest_3 is failed",-15, t.run2(15));
+        assertEquals("Subtest_4 is failed",123, t.run2(-123));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_rsub_int_12 t = new T_rsub_int_12();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = 0, b-a = -Integer.MAX_VALUE
+     * 2: a = Short.MAX_VALUE, b = 0, b-a = -Short.MAX_VALUE
+     */
+    public void testB1() {
+        T_rsub_int_3 t = new T_rsub_int_3();
+        assertEquals(-Integer.MAX_VALUE, t.run(Integer.MAX_VALUE));
+        assertEquals(-Short.MAX_VALUE, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = 0, b-a = Integer.MIN_VALUE
+     * 2: a = Short.MIN_VALUE, b = 0, b-a = 32768
+     */
+    public void testB2() {
+        T_rsub_int_3 t = new T_rsub_int_3();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(32768, t.run(Short.MIN_VALUE));
+    }
+    
+    /**
+     * @title (a = 0, b = 0, b-a = 0)
+     */
+    public void testB3() {
+        T_rsub_int_3 t = new T_rsub_int_3();
+        assertEquals(0, t.run(0));
+    }
+    
+    /**
+     * @title 
+     * 1: a = 0, b = Short.MAX_VALUE, b-a = Short.MAX_VALUE
+     * 2: a = 1, b = Short.MAX_VALUE, b-a = 32766
+     * 3: a = -1, b = Short.MAX_VALUE, b-a = 32768
+     */
+    public void testB4() {
+        T_rsub_int_4 t = new T_rsub_int_4();
+        assertEquals(Short.MAX_VALUE, t.run(0));
+        assertEquals(32766, t.run(1));
+        assertEquals(32768, t.run(-1));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = Short.MAX_VALUE, b-a = -2147450881
+     * 2: a = Integer.MAX_VALUE, b = Short.MAX_VALUE, b-a = -2147450880
+     * 3: a = Short.MIN_VALUE, b = Short.MAX_VALUE, b-a = 65535
+     */
+    public void testB5() {
+        T_rsub_int_4 t = new T_rsub_int_4();
+        assertEquals(-2147450881, t.run(Integer.MIN_VALUE));
+        assertEquals(-2147450880, t.run(Integer.MAX_VALUE));
+        assertEquals(65535, t.run(Short.MIN_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = 0, b = Short.MIN_VALUE, b-a = Short.MIN_VALUE
+     * 2: a = 1, b = Short.MIN_VALUE, b-a = -32769
+     * 3: a = -1, b = Short.MIN_VALUE, b-a = -32767
+     */
+    public void testB6() {
+        T_rsub_int_5 t = new T_rsub_int_5();
+        assertEquals(Short.MIN_VALUE, t.run(0));
+        assertEquals(-32769, t.run(1));
+        assertEquals(-32767, t.run(-1));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = Short.MIN_VALUE, b-a = 2147450881
+     * 2: a = Integer.MIN_VALUE, b = Short.MIN_VALUE, b-a = 2147450880
+     * 3: a = Short.MAX_VALUE, b = Short.MIN_VALUE, b-a = -65535
+     */
+    public void testB7() {
+        T_rsub_int_5 t = new T_rsub_int_5();
+        assertEquals(2147450881, t.run(Integer.MAX_VALUE));
+        assertEquals(2147450880, t.run(Integer.MIN_VALUE));
+        assertEquals(-65535, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = -1, b-a = Integer.MAX_VALUE
+     * 2: a = Short.MIN_VALUE, b = -1, b-a = Short.MAX_VALUE 
+     */
+    public void testB8() {
+        T_rsub_int_6 t = new T_rsub_int_6();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(Short.MAX_VALUE, t.run(Short.MIN_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = -1, b-a = Integer.MIN_VALUE
+     * 2: a = Short.MAX_VALUE, b = -1, b-a = -32768
+     */
+    public void testB9() {
+        T_rsub_int_6 t = new T_rsub_int_6();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE));
+        assertEquals(-32768, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = 1, b-a = -Integer.MAX_VALUE
+     * 2: a = Integer.MAX_VALUE, b = 1, b-a = -2147483646
+     */
+    public void testB10() {
+        T_rsub_int_7 t = new T_rsub_int_7();
+        assertEquals(-Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(-2147483646, t.run(Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Short.MIN_VALUE, b = 1, b-a = 32769
+     * 2: a = Short.MAX_VALUE, b = 1, b-a = -32766
+     */
+    public void testB11() {
+        T_rsub_int_7 t = new T_rsub_int_7();
+        assertEquals(32769, t.run(Short.MIN_VALUE));
+        assertEquals(-32766, t.run(Short.MAX_VALUE));
+    }
+    
+    /**
+     * @title (a = 1, b = 1, b-a = 0)
+     */
+    public void testB12() {
+        T_rsub_int_7 t = new T_rsub_int_7();
+        assertEquals(0, t.run(1));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int.d.T_rsub_int_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.d
new file mode 100644
index 0000000..b5124e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.d
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_1.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 4
+       return v0
+.end method
+
+.method public run1(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 60
+       return v0
+.end method
+
+.method public run2(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 20
+       return v0
+.end method
+
+.method public run3(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -25
+       return v0
+.end method
+
+.method public run4(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -70
+       return v0
+.end method
+
+.method public run5(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -50
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.java
new file mode 100644
index 0000000..f90f354
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_1.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_1 {
+    
+    public int run(int a) {
+        int b = 4;
+        return b-a;
+    }
+    
+    public int run1(int a) {
+        int b = 60;
+        return b-a;
+    }
+    
+    public int run2(int a) {
+        int b = 20;
+        return b-a;
+    }
+    
+    public int run3(int a) {
+        int b = -25;
+        return b-a;
+    }
+    
+    public int run4(int a) {
+        int b = -70;
+        return b-a;
+    }
+    
+    public int run5(int a) {
+        int b = -50;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.d
new file mode 100644
index 0000000..544a12c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_10.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 4
+
+       rsub-int v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.d
new file mode 100644
index 0000000..e9a9b26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_11.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.d
new file mode 100644
index 0000000..9c1ffec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_12.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+
+       rsub-int v0, v3, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.java
new file mode 100644
index 0000000..d3b3a4d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_12.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_12 {
+    
+    public int run(float a) {
+        int b = 10;
+        return b-(int)a;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.d
new file mode 100644
index 0000000..4d63eea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_2.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 255
+       return v0
+.end method
+
+.method public run1(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -32768
+       return v0
+.end method
+
+.method public run2(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.java
new file mode 100644
index 0000000..b1d8e90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_2.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_2 {
+    
+    public int run(int a) {
+        int b = 255;
+        return b-a;
+    }
+    
+    public int run1(int a) {
+        int b = -32768;
+        return b-a;
+    }
+    
+    public int run2(int a) {
+        int b = 0;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.d
new file mode 100644
index 0000000..23efe0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_3.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.java
new file mode 100644
index 0000000..b060bd2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_3 {
+    
+    public int run(int a) {
+        int b = 0;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.d
new file mode 100644
index 0000000..c37f9da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_4.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 32767
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.java
new file mode 100644
index 0000000..5b38c5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_4 {
+    
+    public int run(int a) {
+        int b = Short.MAX_VALUE;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.d
new file mode 100644
index 0000000..473020a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_5.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -32768
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.java
new file mode 100644
index 0000000..259002c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_5 {
+    
+    public int run(int a) {
+        int b = Short.MIN_VALUE;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.d
new file mode 100644
index 0000000..e902f19
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_6.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.java
new file mode 100644
index 0000000..221f348
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_6 {
+    
+    public int run(int a) {
+        int b = -1;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.d
new file mode 100644
index 0000000..6bb3571
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_7.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v3, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.java
new file mode 100644
index 0000000..180e76c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int.d;
+
+public class T_rsub_int_7 {
+    
+    public int run(int a) {
+        int b = 1;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.d
new file mode 100644
index 0000000..9494e21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_8.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int v0, v4, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.d
new file mode 100644
index 0000000..12b5fe4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int/d/T_rsub_int_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_9.java
+.class public dot.junit.opcodes.rsub_int.d.T_rsub_int_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 4
+
+       rsub-int v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/Test_rsub_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/Test_rsub_int_lit8.java
new file mode 100644
index 0000000..44dc89a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/Test_rsub_int_lit8.java
@@ -0,0 +1,255 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_1;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_2;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_3;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_4;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_5;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_6;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_7;
+import dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_12;
+
+public class Test_rsub_int_lit8 extends DxTestCase {
+
+    /**
+     * @title normal test - check different values
+     */
+    public void testN1() {
+        T_rsub_int_lit8_1 t = new T_rsub_int_lit8_1();
+        assertEquals("Subtest_1 is failed", -4, t.run(8));
+        assertEquals("Subtest_2 is failed",45, t.run1(15));
+        assertEquals("Subtest_3 is failed",0, t.run2(20));
+        assertEquals("Subtest_4 is failed",-35, t.run3(10));
+        assertEquals("Subtest_5 is failed",-20, t.run4(-50));
+        assertEquals("Subtest_6 is failed",20, t.run5(-70));
+    }
+
+    /**
+     * @title normal test - check different values
+     */
+    public void testN2() {
+        T_rsub_int_lit8_2 t = new T_rsub_int_lit8_2();
+        assertEquals("Subtest_1 is failed",123, t.run(0));
+        assertEquals("Subtest_2 is failed",-123, t.run1(0));
+        assertEquals("Subtest_3 is failed",-15, t.run2(15));
+        assertEquals("Subtest_4 is failed",85, t.run2(-85));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_rsub_int_lit8_12 t = new T_rsub_int_lit8_12();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = 0, b-a = -Integer.MAX_VALUE
+     * 2: a = Byte.MAX_VALUE, b = 0, b-a = -Byte.MAX_VALUE
+     */
+    public void testB1() {
+        T_rsub_int_lit8_3 t = new T_rsub_int_lit8_3();
+        assertEquals(-Integer.MAX_VALUE, t.run(Integer.MAX_VALUE));
+        assertEquals(-Byte.MAX_VALUE, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = 0, b-a = Integer.MIN_VALUE
+     * 2: a = Byte.MIN_VALUE, b = 0, b-a = 128
+     */
+    public void testB2() {
+        T_rsub_int_lit8_3 t = new T_rsub_int_lit8_3();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(128, t.run(Byte.MIN_VALUE));
+    }
+    
+    /**
+     * @title (a = 0, b = 0, b-a = 0)
+     */
+    public void testB3() {
+        T_rsub_int_lit8_3 t = new T_rsub_int_lit8_3();
+        assertEquals(0, t.run(0));
+    }
+    
+    /**
+     * @title 
+     * 1: a = 0, b = Byte.MAX_VALUE, b-a = Byte.MAX_VALUE
+     * 2: a = 1, b = Byte.MAX_VALUE, b-a = 126
+     * 3: a = -1, b = Byte.MAX_VALUE, b-a = 128
+     */
+    public void testB4() {
+        T_rsub_int_lit8_4 t = new T_rsub_int_lit8_4();
+        assertEquals(Byte.MAX_VALUE, t.run(0));
+        assertEquals(126, t.run(1));
+        assertEquals(128, t.run(-1));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = Byte.MAX_VALUE, b-a = -2147483521
+     * 2: a = Integer.MAX_VALUE, b = Byte.MAX_VALUE, b-a = -2147483520
+     * 3: a = Byte.MIN_VALUE, b = Byte.MAX_VALUE, b-a = 255
+     */
+    public void testB5() {
+        T_rsub_int_lit8_4 t = new T_rsub_int_lit8_4();
+        assertEquals(-2147483521, t.run(Integer.MIN_VALUE));
+        assertEquals(-2147483520, t.run(Integer.MAX_VALUE));
+        assertEquals(255, t.run(Byte.MIN_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = 0, b = Byte.MIN_VALUE, b-a = Byte.MIN_VALUE
+     * 2: a = 1, b = Byte.MIN_VALUE, b-a = -129
+     * 3: a = -1, b = Byte.MIN_VALUE, b-a = -127
+     */
+    public void testB6() {
+        T_rsub_int_lit8_5 t = new T_rsub_int_lit8_5();
+        assertEquals(Byte.MIN_VALUE, t.run(0));
+        assertEquals(-129, t.run(1));
+        assertEquals(-127, t.run(-1));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = Byte.MIN_VALUE, b-a = 2147483521
+     * 2: a = Integer.MIN_VALUE, b = Byte.MIN_VALUE, b-a = 2147483520
+     * 3: a = Byte.MAX_VALUE, b = Byte.MIN_VALUE, b-a = -255
+     */
+    public void testB7() {
+        T_rsub_int_lit8_5 t = new T_rsub_int_lit8_5();
+        assertEquals(2147483521, t.run(Integer.MAX_VALUE));
+        assertEquals(2147483520, t.run(Integer.MIN_VALUE));
+        assertEquals(-255, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = -1, b-a = Integer.MAX_VALUE
+     * 2: a = Byte.MIN_VALUE, b = -1, b-a = Byte.MAX_VALUE 
+     */
+    public void testB8() {
+        T_rsub_int_lit8_6 t = new T_rsub_int_lit8_6();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(Byte.MAX_VALUE, t.run(Byte.MIN_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MAX_VALUE, b = -1, b-a = Integer.MIN_VALUE
+     * 2: a = Byte.MAX_VALUE, b = -1, b-a = Byte.MIN_VALUE
+     */
+    public void testB9() {
+        T_rsub_int_lit8_6 t = new T_rsub_int_lit8_6();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE));
+        assertEquals(Byte.MIN_VALUE, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Integer.MIN_VALUE, b = 1, b-a = -Integer.MAX_VALUE
+     * 2: a = Integer.MAX_VALUE, b = 1, b-a = -2147483646
+     */
+    public void testB10() {
+        T_rsub_int_lit8_7 t = new T_rsub_int_lit8_7();
+        assertEquals(-Integer.MAX_VALUE, t.run(Integer.MIN_VALUE));
+        assertEquals(-2147483646, t.run(Integer.MAX_VALUE));
+    }
+    
+    /**
+     * @title 
+     * 1: a = Byte.MIN_VALUE, b = 1, b-a = 129
+     * 2: a = Byte.MAX_VALUE, b = 1, b-a = -126
+     */
+    public void testB11() {
+        T_rsub_int_lit8_7 t = new T_rsub_int_lit8_7();
+        assertEquals(129, t.run(Byte.MIN_VALUE));
+        assertEquals(-126, t.run(Byte.MAX_VALUE));
+    }
+    
+    /**
+     * @title (a = 1, b = 1, b-a = 0)
+     */
+    public void testB12() {
+        T_rsub_int_lit8_7 t = new T_rsub_int_lit8_7();
+        assertEquals(0, t.run(1));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.d
new file mode 100644
index 0000000..fd45062
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.d
@@ -0,0 +1,67 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_lit8_1.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 4
+       return v0
+.end method
+
+.method public run1(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 60
+       return v0
+.end method
+
+.method public run2(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 20
+       return v0
+.end method
+
+.method public run3(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -25
+       return v0
+.end method
+
+.method public run4(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -70
+       return v0
+.end method
+
+.method public run5(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -50
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.java
new file mode 100644
index 0000000..e489328
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_1.java
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_1 {
+    
+    public int run(int a) {
+        int b = 4;
+        return b-a;
+    }
+    
+    public int run1(int a) {
+        int b = 60;
+        return b-a;
+    }
+    
+    public int run2(int a) {
+        int b = 20;
+        return b-a;
+    }
+    
+    public int run3(int a) {
+        int b = -25;
+        return b-a;
+    }
+    
+    public int run4(int a) {
+        int b = -70;
+        return b-a;
+    }
+    
+    public int run5(int a) {
+        int b = -50;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.d
new file mode 100644
index 0000000..a8e37a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_10.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_lit8_10.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.d
new file mode 100644
index 0000000..615eede
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_lit8_11.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.d
new file mode 100644
index 0000000..7490328
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_lit8_12.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_12
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.java
new file mode 100644
index 0000000..9612590
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_12 {
+    
+    public int run(float a) {
+        int b = 10;
+        return b-(int)a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.d
new file mode 100644
index 0000000..fa026fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_lit8_2.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 123
+       return v0
+.end method
+
+.method public run1(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -123
+       return v0
+.end method
+
+.method public run2(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.java
new file mode 100644
index 0000000..036ec06
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_2.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_2 {
+    
+    public int run(int a) {
+        int b = 123;
+        return b-a;
+    }
+    
+    public int run1(int a) {
+        int b = -123;
+        return b-a;
+    }
+    
+    public int run2(int a) {
+        int b = 0;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.d
new file mode 100644
index 0000000..b9b5c3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_lit8_3.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.java
new file mode 100644
index 0000000..deb1885
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_3.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_3 {
+    
+    public int run(int a) {
+        int b = 0;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.d
new file mode 100644
index 0000000..b330a45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_lit8_4.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 127
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.java
new file mode 100644
index 0000000..72ddcff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_4.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_4 {
+    
+    public int run(int a) {
+        int b = Byte.MAX_VALUE;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.d
new file mode 100644
index 0000000..77a0e8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_lit8_5.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -128
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.java
new file mode 100644
index 0000000..1ec8d63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_5 {
+    
+    public int run(int a) {
+        int b = Byte.MIN_VALUE;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.d
new file mode 100644
index 0000000..bd5d5ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_lit8_6.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.java
new file mode 100644
index 0000000..bfe342c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_6.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_6 {
+    
+    public int run(int a) {
+        int b = -1;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.d
new file mode 100644
index 0000000..18cd602
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_lit8_7.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v3, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.java
new file mode 100644
index 0000000..ca23fb0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_7.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.rsub_int_lit8.d;
+
+public class T_rsub_int_lit8_7 {
+    
+    public int run(int a) {
+        int b = 1;
+        return b-a;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.d
new file mode 100644
index 0000000..69df5ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_8.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_lit8_8.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v4, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.d
new file mode 100644
index 0000000..4db3540
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/rsub_int_lit8/d/T_rsub_int_lit8_9.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_rsub_int_lit8_9.java
+.class public dot.junit.opcodes.rsub_int_lit8.d.T_rsub_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 4
+
+       rsub-int/lit8 v0, v2, 10
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/TestStubs.java
new file mode 100644
index 0000000..4c49c61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget;
+
+public class TestStubs {
+    // used by testVFE4
+    private static int TestStubField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/Test_sget.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/Test_sget.java
new file mode 100644
index 0000000..981b19a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/Test_sget.java
@@ -0,0 +1,276 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget.d.T_sget_1;
+import dot.junit.opcodes.sget.d.T_sget_11;
+import dot.junit.opcodes.sget.d.T_sget_12;
+import dot.junit.opcodes.sget.d.T_sget_13;
+import dot.junit.opcodes.sget.d.T_sget_2;
+import dot.junit.opcodes.sget.d.T_sget_5;
+import dot.junit.opcodes.sget.d.T_sget_6;
+import dot.junit.opcodes.sget.d.T_sget_7;
+import dot.junit.opcodes.sget.d.T_sget_8;
+import dot.junit.opcodes.sget.d.T_sget_9;
+
+public class Test_sget extends DxTestCase {
+
+    /**
+     * @title type - int
+     */
+    public void testN1() {
+        T_sget_1 t = new T_sget_1();
+        assertEquals(5, t.run());
+    }
+
+    /**
+     * @title type - float
+     */
+    public void testN2() {
+        T_sget_2 t = new T_sget_2();
+        assertEquals(123f, t.run());
+    }
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget.d.T_sget_1
+        //@uses dot.junit.opcodes.sget.d.T_sget_11
+        T_sget_11 t = new T_sget_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+        T_sget_5 t = new T_sget_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_9 t = new T_sget_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read integer from long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget.d.T_sget_6
+        //@uses dot.junit.opcodes.sget.TestStubs
+        try {
+            new T_sget_6().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget.d.T_sget_12
+        //@uses dot.junit.opcodes.sget.d.T_sget_1
+        try {
+            new T_sget_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget shall not work for boolean fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget.d.T_sget_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.d
new file mode 100644
index 0000000..35e5808
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_1.java
+.class public dot.junit.opcodes.sget.d.T_sget_1
+.super java/lang/Object
+
+.field public static i1 I
+.field protected static p1 I
+.field private static pvt1 I
+
+.method static <clinit>()V
+.limit regs 1
+       const/4 v0, 5
+       sput v0, dot.junit.opcodes.sget.d.T_sget_1.i1 I
+
+       const/16 v0, 10
+       sput v0, dot.junit.opcodes.sget.d.T_sget_1.p1 I
+
+       const/16 v0, 20
+       sput v0, dot.junit.opcodes.sget.d.T_sget_1.pvt1 I
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_1.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.java
new file mode 100644
index 0000000..7514f03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget.d;
+
+public class T_sget_1 {
+    public static int i1 = 5;
+    protected static int p1 = 10;
+    private static int pvt1 = 20;
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.d
new file mode 100644
index 0000000..fb446be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_11.java
+.class public dot.junit.opcodes.sget.d.T_sget_11
+.super dot/junit/opcodes/sget/d/T_sget_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget/d/T_sget_1/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_1.p1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.java
new file mode 100644
index 0000000..26c6cb3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget.d;
+
+public class T_sget_11 extends T_sget_1 {
+
+    public int run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.d
new file mode 100644
index 0000000..b1e9093
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_12.java
+.class public dot.junit.opcodes.sget.d.T_sget_12
+.super dot/junit/opcodes/sget/d/T_sget_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget/d/T_sget_1/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_1.pvt1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.java
new file mode 100644
index 0000000..f4232d3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget.d;
+
+public class T_sget_12 {
+    public int run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.d
new file mode 100644
index 0000000..7122dbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_13.java
+.class public dot.junit.opcodes.sget.d.T_sget_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_13.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.java
new file mode 100644
index 0000000..a1d862f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget.d;
+
+public class T_sget_13 {
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_14.d
new file mode 100644
index 0000000..43ed17b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_14.java
+.class public dot.junit.opcodes.sget.d.T_sget_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_15.d
new file mode 100644
index 0000000..a9d65e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_15.java
+.class public dot.junit.opcodes.sget.d.T_sget_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_16.d
new file mode 100644
index 0000000..71602db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_16.java
+.class public dot.junit.opcodes.sget.d.T_sget_16
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_16.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_17.d
new file mode 100644
index 0000000..e7bdc56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_17.java
+.class public dot.junit.opcodes.sget.d.T_sget_17
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_18.d
new file mode 100644
index 0000000..62dbc28
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_18.java
+.class public dot.junit.opcodes.sget.d.T_sget_18
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_19.d
new file mode 100644
index 0000000..0f3374d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_19.java
+.class public dot.junit.opcodes.sget.d.T_sget_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.d
new file mode 100644
index 0000000..de5c7cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_2.java
+.class public dot.junit.opcodes.sget.d.T_sget_2
+.super java/lang/Object
+
+.field public static val F
+
+.method static <clinit>()V
+.limit regs 2
+       const v0, 123.0
+       sput v0, dot.junit.opcodes.sget.d.T_sget_2.val F
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()F
+.limit regs 4
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_2.val F
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.java
new file mode 100644
index 0000000..ff7bdee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget.d;
+
+public class T_sget_2 {
+
+    public static float val = 123.0f;
+    
+    public float run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_20.d
new file mode 100644
index 0000000..e03ccd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_20.java
+.class public dot.junit.opcodes.sget.d.T_sget_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v0, dot.junit.opcodes.sget.d.T_sget_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_3.d
new file mode 100644
index 0000000..1932bb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_3.java
+.class public dot.junit.opcodes.sget.d.T_sget_3
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget v3, dot.junit.opcodes.sget.d.T_sget_3.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.d
new file mode 100644
index 0000000..761c38f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_4.java
+.class public dot.junit.opcodes.sget.d.T_sget_4
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_4.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.dfh
new file mode 100644
index 0000000..4e7aba1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget/d/T_sget_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget/d/T_sget_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 69ff3a97
+    97 3A FF 69 
+// parsed: offset 12, len 20: signature           : 3483...6e37
+    34 83 98 B4 CA 38 A5 6E 4C 43 40 55 16 41 5A 69 D0 18 6E 37 
+// parsed: offset 32, len 4: file_size           : 544
+    20 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 408 (0x000198)
+    98 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 296
+    28 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "I"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/sget/d/T_sget_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 344 (0x000158) "Ljava/lang/Object;"
+    58 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 364 (0x00016c) "T_sget_4.java"
+    6C 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 379 (0x00017b) "V"
+    7B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 382 (0x00017e) "i1"
+    7E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 386 (0x000182) "run"
+    82 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget/d/T_sget_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "I"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sget/d/T_sget_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 391 (0x000187)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 87 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget.d.T_sget_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget.d.T_sget_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget v1, Ldot/junit/opcodes/sget/d/T_sget_4;.i1:I // field@0000
+//@mod            60 01 00 00 
+            60 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 307, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget/d/T_sget_4;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 2F 64 2F 54 5F 73 67 65 74 5F 34 3B 00 
+// parsed: offset 344, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 364, len 15: TYPE_STRING_DATA_ITEM [4] "T_sget_4.java"
+    0D 54 5F 73 67 65 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 379, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 382, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 386, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget/d/T_sget_4;"
+    // parsed: offset 391, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 392, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 393, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 394, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 395, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 396, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 397, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 398, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 401, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 403, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 404, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 405, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 407, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 408, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 412, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 424, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 436, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 448, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 460, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 472, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 484, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 496, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 508, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 520, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 391 (0x000187)
+        00 20 00 00 01 00 00 00 87 01 00 00 
+    // parsed: offset 532, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 10 00 00 01 00 00 00 98 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.d
new file mode 100644
index 0000000..544f350
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_5.java
+.class public dot.junit.opcodes.sget.d.T_sget_5
+.super java/lang/Object
+
+.field public i1 I
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const/4 v2, 5
+       iput v2, v3, dot.junit.opcodes.sget.d.T_sget_5.i1 I
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_5.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.java
new file mode 100644
index 0000000..1dac50e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget.d;
+
+public class T_sget_5 {
+
+    public int i1 = 5;
+    public int run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.d
new file mode 100644
index 0000000..b78b202
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_6.java
+.class public dot.junit.opcodes.sget.d.T_sget_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.TestStubs.TestStubField I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.java
new file mode 100644
index 0000000..8f81780
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget.d;
+
+public class T_sget_6 {
+    public int run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.d
new file mode 100644
index 0000000..7423dcd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_7.java
+.class public dot.junit.opcodes.sget.d.T_sget_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_7no_class.i1 I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.java
new file mode 100644
index 0000000..8960240
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget.d;
+
+public class T_sget_7 {
+    public int run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.d
new file mode 100644
index 0000000..915f609
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_8.java
+.class public dot.junit.opcodes.sget.d.T_sget_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.T_sget_8.i1N I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.java
new file mode 100644
index 0000000..17e16f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget.d;
+
+public class T_sget_8 {
+    public int run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.d
new file mode 100644
index 0000000..831c623
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.d
@@ -0,0 +1,52 @@
+; Copyright (C) 2008 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.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget.d.StubInitError
+.super java/lang/Object
+
+.field public static value I
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput v1, dot.junit.opcodes.sget.d.StubInitError.value I
+       return-void
+.end method
+
+
+.source T_sget_9.java
+.class public dot.junit.opcodes.sget.d.T_sget_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       sget v1, dot.junit.opcodes.sget.d.StubInitError.value I
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.java
new file mode 100644
index 0000000..600a586
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget/d/T_sget_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget.d;
+
+public class T_sget_9 {
+    
+    public int run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/TestStubs.java
new file mode 100644
index 0000000..b353763
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_boolean;
+
+public class TestStubs {
+    // used by testVFE4
+    private static boolean TestStubField = false;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/Test_sget_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/Test_sget_boolean.java
new file mode 100644
index 0000000..ccbeb09
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/Test_sget_boolean.java
@@ -0,0 +1,270 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_11;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_12;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_13;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_6;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_7;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_8;
+import dot.junit.opcodes.sget_boolean.d.T_sget_boolean_9;
+
+public class Test_sget_boolean extends DxTestCase {
+
+    /**
+     * @title get boolean from static field
+     */
+    public void testN1() {
+        T_sget_boolean_1 t = new T_sget_boolean_1();
+        assertEquals(true, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_11
+        T_sget_boolean_11 t = new T_sget_boolean_11();
+        assertEquals(true, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+
+        T_sget_boolean_5 t = new T_sget_boolean_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_boolean_9 t = new T_sget_boolean_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read boolean from long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_boolean_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_6
+        //@uses dot.junit.opcodes.sget_boolean.TestStubs
+        try {
+            new T_sget_boolean_6().run();
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_boolean_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_boolean_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_12
+        //@uses dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1
+        try {
+            new T_sget_boolean_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget_boolean shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_boolean shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_boolean shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_boolean shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_boolean shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_boolean shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_boolean shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_boolean.d.T_sget_boolean_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.d
new file mode 100644
index 0000000..1910152
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_1.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1
+.super java/lang/Object
+
+.field public static i1 Z
+.field protected static p1 Z
+.field private static pvt1 Z
+
+.method static <clinit>()V
+.limit regs 1
+       const/4 v0, 1
+       sput-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.i1 Z
+
+       const/16 v0, 1
+       sput-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.p1 Z
+
+       const/16 v0, 1
+       sput-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.pvt1 Z
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.java
new file mode 100644
index 0000000..00604c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_1 {
+    public static boolean i1 = true;
+    protected static boolean p1 = true;
+    private static boolean pvt1 = true;
+    
+    public boolean run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.d
new file mode 100644
index 0000000..a37791b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_11.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_11
+.super dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.p1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.java
new file mode 100644
index 0000000..46e332b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_11 extends T_sget_boolean_1 {
+
+    public boolean run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.d
new file mode 100644
index 0000000..a6d38b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_12.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_12
+.super dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_boolean/d/T_sget_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_1.pvt1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.java
new file mode 100644
index 0000000..74566c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_12 {
+    public boolean run(){
+        return true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.d
new file mode 100644
index 0000000..f183859
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_13.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_13.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.java
new file mode 100644
index 0000000..f69d590
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.d
new file mode 100644
index 0000000..90de215
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_14.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.d
new file mode 100644
index 0000000..e09d93c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_15.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.d
new file mode 100644
index 0000000..f6c3529
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_16.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.d
new file mode 100644
index 0000000..25cadc8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_17.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_17
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.d
new file mode 100644
index 0000000..871ff9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_18.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_18
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.d
new file mode 100644
index 0000000..1f4f9e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_19.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.d
new file mode 100644
index 0000000..79d51ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_20.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v0, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.d
new file mode 100644
index 0000000..c3271ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_3.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_3
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-boolean v3, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_3.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.d
new file mode 100644
index 0000000..2ef169f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_4.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dfh
new file mode 100644
index 0000000..2c1995e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 70504938
+    38 49 50 70 
+// parsed: offset 12, len 20: signature           : 1b7b...73d9
+    1B 7B 48 9B 96 83 AB B3 90 67 E9 49 E2 EF 20 98 90 CD 73 D9 
+// parsed: offset 32, len 4: file_size           : 568
+    38 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 432 (0x0001b0)
+    B0 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "Ljava/lang/Object;"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 377 (0x000179) "T_sget_boolean_4.java"
+    79 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 400 (0x000190) "V"
+    90 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 403 (0x000193) "Z"
+    93 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 406 (0x000196) "i1"
+    96 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 410 (0x00019a) "run"
+    9A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "Z"
+//     return_type_idx: 3 (0x000003) "Z"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  type_idx: 3 (0x000003) name_idx: 6 (0x000006) "i1"
+    00 00 03 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 7 (0x000007) "run"
+    00 00 01 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_sget_boolean_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 415 (0x00019f)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 9F 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_boolean.d.T_sget_boolean_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-boolean v1, Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;.i1:Z // field@0000
+//@mod            63 01 00 00 
+            63 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 53: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 62 6F 6F 6C 65 61 6E 2F 64 2F 54 5F 73 67 65 74 5F 62 6F 6F 6C 65 61 6E 5F 34 3B 00 
+// parsed: offset 357, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 377, len 23: TYPE_STRING_DATA_ITEM [3] "T_sget_boolean_4.java"
+    15 54 5F 73 67 65 74 5F 62 6F 6F 6C 65 61 6E 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 400, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 403, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 406, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 410, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_boolean/d/T_sget_boolean_4;"
+    // parsed: offset 415, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 416, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 417, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 418, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 419, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 420, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 421, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 422, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 425, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 427, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 428, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 429, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 431, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 432, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 436, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 448, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 460, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 472, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 484, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 496, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 508, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 520, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 532, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 544, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 415 (0x00019f)
+        00 20 00 00 01 00 00 00 9F 01 00 00 
+    // parsed: offset 556, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 432 (0x0001b0)
+        00 10 00 00 01 00 00 00 B0 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.d
new file mode 100644
index 0000000..8edf874
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_5.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5
+.super java/lang/Object
+
+.field public i1 Z
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const/4 v2, 1
+       iput-boolean v2, v3, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5.i1 Z
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_5.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.java
new file mode 100644
index 0000000..e8c679a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_5 {
+
+    public boolean i1 = false;
+    public boolean run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.d
new file mode 100644
index 0000000..2bd59dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_6.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.TestStubs.TestStubField Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.java
new file mode 100644
index 0000000..ecf8943
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_6 {
+    public boolean run(){
+        return true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.d
new file mode 100644
index 0000000..32ef38f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_7.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_7no_class.i1 Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.java
new file mode 100644
index 0000000..4db0e16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_7 {
+    public boolean run(){
+        return true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.d
new file mode 100644
index 0000000..04c780c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_boolean_8.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.T_sget_boolean_8.i1N Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.java
new file mode 100644
index 0000000..42cf804
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_8 {
+    public boolean run(){
+        return true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.d
new file mode 100644
index 0000000..0cf9a87
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_boolean.d.StubInitError
+.super java/lang/Object
+
+.field public static value Z
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sget_boolean.d.StubInitError.value Z
+       return-void
+.end method
+
+
+.source T_sget_boolean_9.java
+.class public dot.junit.opcodes.sget_boolean.d.T_sget_boolean_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Z
+.limit regs 3
+
+       sget-boolean v1, dot.junit.opcodes.sget_boolean.d.StubInitError.value Z
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.java
new file mode 100644
index 0000000..0956174
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_boolean/d/T_sget_boolean_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_boolean.d;
+
+public class T_sget_boolean_9 {
+    
+    public boolean run(){
+        return false;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/TestStubs.java
new file mode 100644
index 0000000..3402e8d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_byte;
+
+public class TestStubs {
+    // used by testVFE4
+    private static byte TestStubField = 0;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/Test_sget_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/Test_sget_byte.java
new file mode 100644
index 0000000..9a19f98
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/Test_sget_byte.java
@@ -0,0 +1,271 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_1;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_11;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_12;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_13;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_5;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_6;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_7;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_8;
+import dot.junit.opcodes.sget_byte.d.T_sget_byte_9;
+
+public class Test_sget_byte extends DxTestCase {
+
+    /**
+     * @title get byte from static field
+     */
+    public void testN1() {
+        T_sget_byte_1 t = new T_sget_byte_1();
+        assertEquals(77, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_1
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_11
+        T_sget_byte_11 t = new T_sget_byte_11();
+        assertEquals(77, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+
+        T_sget_byte_5 t = new T_sget_byte_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_byte_9 t = new T_sget_byte_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read byte from long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_byte_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_6
+        //@uses dot.junit.opcodes.sget_byte.TestStubs
+        try {
+            new T_sget_byte_6().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_byte_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_byte_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_12
+        //@uses dot.junit.opcodes.sget_byte.d.T_sget_byte_1
+        try {
+            new T_sget_byte_12().run();
+            fail("expected a verification exception");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget_byte shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_byte shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_byte shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_byte shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_byte shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_byte shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_byte shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_byte.d.T_sget_byte_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.d
new file mode 100644
index 0000000..314c2b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_1.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_1
+.super java/lang/Object
+
+.field public static i1 B
+.field protected static p1 B
+.field private static pvt1 B
+
+.method static <clinit>()V
+.limit regs 1
+       const v0, 77
+       sput-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.i1 B
+
+       const v0, 77
+       sput-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.p1 B
+
+       const v0, 77
+       sput-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.pvt1 B
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.java
new file mode 100644
index 0000000..e1918b9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_1 {
+    public static byte i1 = 77;
+    protected static byte p1 = 77;
+    private static byte pvt1 = 77;
+    
+    public byte run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.d
new file mode 100644
index 0000000..2c6fb91
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_11.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_11
+.super dot/junit/opcodes/sget_byte/d/T_sget_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_byte/d/T_sget_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.p1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.java
new file mode 100644
index 0000000..bf69487
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_11 extends T_sget_byte_1 {
+
+    public byte run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.d
new file mode 100644
index 0000000..f2be588
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_12.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_12
+.super dot/junit/opcodes/sget_byte/d/T_sget_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_byte/d/T_sget_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_1.pvt1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.java
new file mode 100644
index 0000000..cbfb2c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_12 {
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.d
new file mode 100644
index 0000000..8da3d7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_13.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_13.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.java
new file mode 100644
index 0000000..b2723ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.d
new file mode 100644
index 0000000..d64eedc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_14.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.d
new file mode 100644
index 0000000..7c02a3b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_15.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.d
new file mode 100644
index 0000000..09e1280
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_16.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.d
new file mode 100644
index 0000000..41d95fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_17.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_17
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.d
new file mode 100644
index 0000000..e95a5eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_18.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_18
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.d
new file mode 100644
index 0000000..822c286
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_19.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.d
new file mode 100644
index 0000000..e9c6567
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_20.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v0, dot.junit.opcodes.sget_byte.d.T_sget_byte_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.d
new file mode 100644
index 0000000..800e5f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_3.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_3
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-byte v3, dot.junit.opcodes.sget_byte.d.T_sget_byte_3.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.d
new file mode 100644
index 0000000..5e884e3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_4.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_4
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_4.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dfh
new file mode 100644
index 0000000..c17b068
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_byte/d/T_sget_byte_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c4b64202
+    02 42 B6 C4 
+// parsed: offset 12, len 20: signature           : e618...6c74
+    E6 18 01 1F 28 B9 CC 8D 4C FC 81 38 DA 39 48 BB 16 05 6C 74 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "B"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_sget_byte_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "B"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "B"
+//     return_type_idx: 0 (0x000000) "B"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_byte_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_byte.d.T_sget_byte_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_byte.d.T_sget_byte_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-byte v1, Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;.i1:B // field@0000
+//@mod            64 01 00 00 
+            64 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "B"
+    01 42 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 62 79 74 65 2F 64 2F 54 5F 73 67 65 74 5F 62 79 74 65 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_sget_byte_4.java"
+    12 54 5F 73 67 65 74 5F 62 79 74 65 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_byte/d/T_sget_byte_4;"
+    // parsed: offset 406, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 407, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.d
new file mode 100644
index 0000000..ad5d006
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_5.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_5
+.super java/lang/Object
+
+.field public i1 B
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const v2, 77
+       iput-byte v2, v3, dot.junit.opcodes.sget_byte.d.T_sget_byte_5.i1 B
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_5.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.java
new file mode 100644
index 0000000..4391486
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_5 {
+
+    public byte i1 = 77;
+    public byte run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.d
new file mode 100644
index 0000000..48a4cb8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_6.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.TestStubs.TestStubField B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.java
new file mode 100644
index 0000000..df4e3f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_6 {
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.d
new file mode 100644
index 0000000..e887bec
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_7.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_7no_class.i1 B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.java
new file mode 100644
index 0000000..b865dde
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_7 {
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.d
new file mode 100644
index 0000000..96ab1da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_byte_8.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.T_sget_byte_8.i1N B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.java
new file mode 100644
index 0000000..605616f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_8 {
+    public byte run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.d
new file mode 100644
index 0000000..aee1a37
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_byte.d.StubInitError
+.super java/lang/Object
+
+.field public static value B
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sget_byte.d.StubInitError.value B
+       return-void
+.end method
+
+
+.source T_sget_byte_9.java
+.class public dot.junit.opcodes.sget_byte.d.T_sget_byte_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()B
+.limit regs 3
+
+       sget-byte v1, dot.junit.opcodes.sget_byte.d.StubInitError.value B
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.java
new file mode 100644
index 0000000..3bd966d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_byte/d/T_sget_byte_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_byte.d;
+
+public class T_sget_byte_9 {
+    
+    public byte run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/TestStubs.java
new file mode 100644
index 0000000..dc99b6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_char;
+
+public class TestStubs {
+    // used by testVFE4
+    private static char TestStubField = 0;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/Test_sget_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/Test_sget_char.java
new file mode 100644
index 0000000..10324a5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/Test_sget_char.java
@@ -0,0 +1,271 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_char.d.T_sget_char_1;
+import dot.junit.opcodes.sget_char.d.T_sget_char_11;
+import dot.junit.opcodes.sget_char.d.T_sget_char_12;
+import dot.junit.opcodes.sget_char.d.T_sget_char_13;
+import dot.junit.opcodes.sget_char.d.T_sget_char_5;
+import dot.junit.opcodes.sget_char.d.T_sget_char_6;
+import dot.junit.opcodes.sget_char.d.T_sget_char_7;
+import dot.junit.opcodes.sget_char.d.T_sget_char_8;
+import dot.junit.opcodes.sget_char.d.T_sget_char_9;
+
+public class Test_sget_char extends DxTestCase {
+
+    /**
+     * @title get char from static field
+     */
+    public void testN1() {
+        T_sget_char_1 t = new T_sget_char_1();
+        assertEquals(77, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_1
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_11
+        T_sget_char_11 t = new T_sget_char_11();
+        assertEquals(77, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+
+        T_sget_char_5 t = new T_sget_char_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_char_9 t = new T_sget_char_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read char from long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_char_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_6
+        //@uses dot.junit.opcodes.sget_char.TestStubs
+        try {
+            new T_sget_char_6().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_char_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_char_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_12
+        //@uses dot.junit.opcodes.sget_char.d.T_sget_char_1
+        try {
+            new T_sget_char_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget_char shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_char shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_char shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_char shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_char shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_char shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_char shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_char.d.T_sget_char_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.d
new file mode 100644
index 0000000..5fc252d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_1.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_1
+.super java/lang/Object
+
+.field public static i1 C
+.field protected static p1 C
+.field private static pvt1 C
+
+.method static <clinit>()V
+.limit regs 1
+       const v0, 77
+       sput-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_1.i1 C
+
+       const v0, 77
+       sput-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_1.p1 C
+
+       const v0, 77
+       sput-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_1.pvt1 C
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_1.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.java
new file mode 100644
index 0000000..3a606be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_1 {
+    public static char i1 = 77;
+    protected static char p1 = 77;
+    private static char pvt1 = 77;
+    
+    public char run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.d
new file mode 100644
index 0000000..d4d3efb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_11.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_11
+.super dot/junit/opcodes/sget_char/d/T_sget_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_char/d/T_sget_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_1.p1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.java
new file mode 100644
index 0000000..fd73e27
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_11 extends T_sget_char_1 {
+
+    public char run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.d
new file mode 100644
index 0000000..708f2db
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_12.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_12
+.super dot/junit/opcodes/sget_char/d/T_sget_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_char/d/T_sget_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_1.pvt1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.java
new file mode 100644
index 0000000..f7affdf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_12 {
+    public char run() {
+        return ' ';
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.d
new file mode 100644
index 0000000..eb652bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_13.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_13.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.java
new file mode 100644
index 0000000..b347b53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.d
new file mode 100644
index 0000000..c1b8040
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_14.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.d
new file mode 100644
index 0000000..dedb8e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_15.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.d
new file mode 100644
index 0000000..82a5544
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_16.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.d
new file mode 100644
index 0000000..abff0e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_17.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_17
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.d
new file mode 100644
index 0000000..b73a284
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_18.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_18
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.d
new file mode 100644
index 0000000..437c0bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_19.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.d
new file mode 100644
index 0000000..eeaff5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_20.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v0, dot.junit.opcodes.sget_char.d.T_sget_char_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.d
new file mode 100644
index 0000000..3c6e95d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_3.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_3
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-char v3, dot.junit.opcodes.sget_char.d.T_sget_char_3.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.d
new file mode 100644
index 0000000..9aeb10d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_4.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_4
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_4.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.dfh
new file mode 100644
index 0000000..42e44bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_char/d/T_sget_char_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_char/d/T_sget_char_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 15a34188
+    88 41 A3 15 
+// parsed: offset 12, len 20: signature           : 7979...9945
+    79 79 0B 7C 86 0C D4 6D A0 83 40 1C 4E AF AA 03 59 84 99 45 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "C"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_sget_char_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "C"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "C"
+//     return_type_idx: 0 (0x000000) "C"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_char_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_char.d.T_sget_char_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_char.d.T_sget_char_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-char v1, Ldot/junit/opcodes/sget_char/d/T_sget_char_4;.i1:C // field@0000
+//@mod            65 01 00 00 
+            65 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "C"
+    01 43 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 63 68 61 72 2F 64 2F 54 5F 73 67 65 74 5F 63 68 61 72 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_sget_char_4.java"
+    12 54 5F 73 67 65 74 5F 63 68 61 72 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_char/d/T_sget_char_4;"
+    // parsed: offset 406, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 407, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.d
new file mode 100644
index 0000000..fe1c7ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_5.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_5
+.super java/lang/Object
+
+.field public i1 C
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const v2, 77
+       iput-char v2, v3, dot.junit.opcodes.sget_char.d.T_sget_char_5.i1 C
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_5.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.java
new file mode 100644
index 0000000..00fb8ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_5 {
+
+    public char i1 = 77;
+    public char run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.d
new file mode 100644
index 0000000..f984ada
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_6.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.TestStubs.TestStubField C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.java
new file mode 100644
index 0000000..7fc0f38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_6 {
+    public char run() {
+        return ' ';
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.d
new file mode 100644
index 0000000..d7b5e35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_7.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_7no_class.i1 C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.java
new file mode 100644
index 0000000..616d9f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_7 {
+    public char run() {
+        return ' ';
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.d
new file mode 100644
index 0000000..89ac2c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_char_8.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.T_sget_char_8.i1N C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.java
new file mode 100644
index 0000000..78e63e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_8 {
+    public char run() {
+        return ' ';
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.d
new file mode 100644
index 0000000..cbb4a54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_char.d.StubInitError
+.super java/lang/Object
+
+.field public static value C
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sget_char.d.StubInitError.value C
+       return-void
+.end method
+
+
+.source T_sget_char_9.java
+.class public dot.junit.opcodes.sget_char.d.T_sget_char_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()C
+.limit regs 3
+
+       sget-char v1, dot.junit.opcodes.sget_char.d.StubInitError.value C
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.java
new file mode 100644
index 0000000..bc84d1e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_char/d/T_sget_char_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_char.d;
+
+public class T_sget_char_9 {
+    
+    public char run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/TestStubs.java
new file mode 100644
index 0000000..68b9ec7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_object;
+
+public class TestStubs {
+    // used by testVFE4
+    private static Object TestStubField = null;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/Test_sget_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/Test_sget_object.java
new file mode 100644
index 0000000..88aa4cb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/Test_sget_object.java
@@ -0,0 +1,285 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_object.d.T_sget_object_1;
+import dot.junit.opcodes.sget_object.d.T_sget_object_11;
+import dot.junit.opcodes.sget_object.d.T_sget_object_12;
+import dot.junit.opcodes.sget_object.d.T_sget_object_13;
+import dot.junit.opcodes.sget_object.d.T_sget_object_21;
+import dot.junit.opcodes.sget_object.d.T_sget_object_5;
+import dot.junit.opcodes.sget_object.d.T_sget_object_6;
+import dot.junit.opcodes.sget_object.d.T_sget_object_7;
+import dot.junit.opcodes.sget_object.d.T_sget_object_8;
+import dot.junit.opcodes.sget_object.d.T_sget_object_9;
+
+public class Test_sget_object extends DxTestCase {
+
+    /**
+     * @title get object from static field
+     */
+    public void testN1() {
+        T_sget_object_1 t = new T_sget_object_1();
+        assertEquals(null, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_1
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_11
+        T_sget_object_11 t = new T_sget_object_11();
+        assertEquals(null, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+
+        T_sget_object_5 t = new T_sget_object_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_object_9 t = new T_sget_object_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read object from long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_object_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_6
+        //@uses dot.junit.opcodes.sget_object.TestStubs
+        try {
+            new T_sget_object_6().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_object_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_object_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_12
+        //@uses dot.junit.opcodes.sget_object.d.T_sget_object_1
+        try {
+            new T_sget_object_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget_object shall not work for short fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_object shall not work for char fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_object shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_object shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_object shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_object shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_object shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_object.d.T_sget_object_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title only field of different type exists)
+     */
+    public void testVFE15() {
+        try {
+            new T_sget_object_21().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.d
new file mode 100644
index 0000000..e77f532
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_1.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_1
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+.field protected static p1 Ljava/lang/Object;
+.field private static pvt1 Ljava/lang/Object;
+
+.method static <clinit>()V
+.limit regs 1
+       const v0, 0
+       sput-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_1.i1 Ljava/lang/Object;
+
+       const v0, 0
+       sput-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_1.p1 Ljava/lang/Object;
+
+       const v0, 0
+       sput-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_1.pvt1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_1.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.java
new file mode 100644
index 0000000..bcfe83b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_1 {
+    public static Object i1 = null;
+    protected static Object p1 = null;
+    private static Object pvt1 = null;
+    
+    public Object run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.d
new file mode 100644
index 0000000..54e497c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_11.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_11
+.super dot/junit/opcodes/sget_object/d/T_sget_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_object/d/T_sget_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_1.p1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.java
new file mode 100644
index 0000000..9b8ce6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_11 extends T_sget_object_1 {
+
+    public Object run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.d
new file mode 100644
index 0000000..b73c407
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_12.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_12
+.super dot/junit/opcodes/sget_object/d/T_sget_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_object/d/T_sget_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_1.pvt1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.java
new file mode 100644
index 0000000..0978a26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_12 {
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.d
new file mode 100644
index 0000000..37a8cb5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_13.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_13.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.java
new file mode 100644
index 0000000..7fe275e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.d
new file mode 100644
index 0000000..1455ebd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_14.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_14
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_14.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.d
new file mode 100644
index 0000000..0634476
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_15.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_15
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_15.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.d
new file mode 100644
index 0000000..42db7a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_16.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.d
new file mode 100644
index 0000000..0a3ba48
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_17.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_17
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.d
new file mode 100644
index 0000000..ca498f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_18.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_18
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.d
new file mode 100644
index 0000000..dfcad9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_19.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.d
new file mode 100644
index 0000000..89e7bfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_20.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.d
new file mode 100644
index 0000000..ddb0713
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_21.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_21
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method static <clinit>()V
+.limit regs 1
+       new-instance v0, java/lang/Object
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       
+       sput-object v0, dot.junit.opcodes.sget_object.d.T_sget_object_21.i1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/String;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_21.i1 Ljava/lang/String;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.java
new file mode 100644
index 0000000..0343390
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_21.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_21 {
+    public String run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.d
new file mode 100644
index 0000000..498a01a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_3.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_3
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-object v3, dot.junit.opcodes.sget_object.d.T_sget_object_3.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.d
new file mode 100644
index 0000000..d00c4a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_4.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_4
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_4.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.dfh
new file mode 100644
index 0000000..1c40c8c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_4.dfh
@@ -0,0 +1,262 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_object/d/T_sget_object_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_object/d/T_sget_object_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : a1514422
+    22 44 51 A1 
+// parsed: offset 12, len 20: signature           : b308...2562
+    B3 08 01 4F 75 89 6C 79 7C 97 5C 84 37 60 65 F6 AF 62 25 62 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 156 (0x00009c)
+    9C 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 188 (0x0000bc)
+    BC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 212 (0x0000d4)
+    D4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 244 (0x0000f4)
+    F4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "L"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_sget_object_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 396 (0x00018c) "V"
+    8C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 399 (0x00018f) "i1"
+    8F 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "run"
+    93 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 156, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "L"
+//     return_type_idx: 1 (0x000001) "Ljava/lang/Object;"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 00 00 00 00 
+// parsed: offset 168, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  type_idx: 1 (0x000001) name_idx: 6 (0x000006) "i1"
+    00 00 01 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 188, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 196, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 204, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 212, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_object_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 408 (0x000198)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 98 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_object.d.T_sget_object_4.<init>"
+    // parsed: offset 244, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 246, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 248, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 250, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 252, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 256, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 260, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 266, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_object.d.T_sget_object_4.run"
+    // parsed: offset 268, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 270, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 272, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 274, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 276, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 280, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 284, len 4: |0000: sget-object v1, Ldot/junit/opcodes/sget_object/d/T_sget_object_4;.i1:Ljava/lang/Object; // field@0000
+//@mod            62 01 00 00 
+            62 01 00 01 
+        // parsed: offset 288, len 2: |0002: return-object v1
+            11 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 290, len 2: PADDING
+    00 00 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "L"
+    01 4C 00 
+// parsed: offset 303, len 51: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 6F 62 6A 65 63 74 2F 64 2F 54 5F 73 67 65 74 5F 6F 62 6A 65 63 74 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 22: TYPE_STRING_DATA_ITEM [4] "T_sget_object_4.java"
+    14 54 5F 73 67 65 74 5F 6F 62 6A 65 63 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 396, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 399, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 403, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_object/d/T_sget_object_4;"
+    // parsed: offset 408, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 409, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 410, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 411, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 412, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 413, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 414, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 415, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 418, len 2: code_off: 244 (0x0000f4)
+                F4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 420, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 421, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 422, len 2: code_off: 268 (0x00010c)
+                8C 02 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 144 (0x000090)
+        02 00 00 00 03 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 156 (0x00009c)
+        03 00 00 00 02 00 00 00 9C 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 180 (0x0000b4)
+        04 00 00 00 01 00 00 00 B4 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 188 (0x0000bc)
+        05 00 00 00 03 00 00 00 BC 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 212 (0x0000d4)
+        06 00 00 00 01 00 00 00 D4 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 244 (0x0000f4)
+        01 20 00 00 02 00 00 00 F4 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 292 (0x000124)
+        02 20 00 00 08 00 00 00 24 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 20 00 00 01 00 00 00 98 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.d
new file mode 100644
index 0000000..35687ab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_5.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_5
+.super java/lang/Object
+
+.field public i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const v2, 0
+       iput-object v2, v3, dot.junit.opcodes.sget_object.d.T_sget_object_5.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_5.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.java
new file mode 100644
index 0000000..116ae52f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_5 {
+
+    public Object i1 = null;
+    public Object run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.d
new file mode 100644
index 0000000..03483da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_6.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.TestStubs.TestStubField Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.java
new file mode 100644
index 0000000..84714b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_6 {
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.d
new file mode 100644
index 0000000..eb172eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_7.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_7no_class.i1 Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.java
new file mode 100644
index 0000000..56fbd35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_7 {
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.d
new file mode 100644
index 0000000..841a454
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_object_8.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.T_sget_object_8.i1N Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.java
new file mode 100644
index 0000000..87afe69
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_8 {
+    public Object run() {
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.d
new file mode 100644
index 0000000..efd184b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_object.d.StubInitError
+.super java/lang/Object
+
+.field public static value Ljava/lang/Object;
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 0
+       sput-object v1, dot.junit.opcodes.sget_object.d.StubInitError.value Ljava/lang/Object;
+       return-void
+.end method
+
+
+.source T_sget_object_9.java
+.class public dot.junit.opcodes.sget_object.d.T_sget_object_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()Ljava/lang/Object;
+.limit regs 3
+
+       sget-object v1, dot.junit.opcodes.sget_object.d.StubInitError.value Ljava/lang/Object;
+       return-object v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.java
new file mode 100644
index 0000000..4fbae55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_object/d/T_sget_object_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_object.d;
+
+public class T_sget_object_9 {
+    
+    public Object run(){
+        return null;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/TestStubs.java
new file mode 100644
index 0000000..3e5605b2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_short;
+
+public class TestStubs {
+    // used by testVFE4
+    private static short TestStubField = 0;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/Test_sget_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/Test_sget_short.java
new file mode 100644
index 0000000..b38ef29
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/Test_sget_short.java
@@ -0,0 +1,271 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_short.d.T_sget_short_1;
+import dot.junit.opcodes.sget_short.d.T_sget_short_11;
+import dot.junit.opcodes.sget_short.d.T_sget_short_12;
+import dot.junit.opcodes.sget_short.d.T_sget_short_13;
+import dot.junit.opcodes.sget_short.d.T_sget_short_5;
+import dot.junit.opcodes.sget_short.d.T_sget_short_6;
+import dot.junit.opcodes.sget_short.d.T_sget_short_7;
+import dot.junit.opcodes.sget_short.d.T_sget_short_8;
+import dot.junit.opcodes.sget_short.d.T_sget_short_9;
+
+public class Test_sget_short extends DxTestCase {
+
+    /**
+     * @title get short from static field
+     */
+    public void testN1() {
+        T_sget_short_1 t = new T_sget_short_1();
+        assertEquals(32000, t.run());
+    }
+
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_1
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_11
+        T_sget_short_11 t = new T_sget_short_11();
+        assertEquals(32000, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+
+        T_sget_short_5 t = new T_sget_short_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sget_short_9 t = new T_sget_short_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read short from long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_short_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_6
+        //@uses dot.junit.opcodes.sget_short.TestStubs
+        try {
+            new T_sget_short_6().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_short_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_short_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_12
+        //@uses dot.junit.opcodes.sget_short.d.T_sget_short_1
+        try {
+            new T_sget_short_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget_short shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_short shall not work for char fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_short shall not work for int fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_short shall not work for byte fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_short shall not work for boolean fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_short shall not work for double fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget_short shall not work for long fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_short.d.T_sget_short_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.d
new file mode 100644
index 0000000..777253e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_1.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_1
+.super java/lang/Object
+
+.field public static i1 S
+.field protected static p1 S
+.field private static pvt1 S
+
+.method static <clinit>()V
+.limit regs 1
+       const v0, 32000
+       sput-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_1.i1 S
+
+       const v0, 32000
+       sput-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_1.p1 S
+
+       const v0, 32000
+       sput-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_1.pvt1 S
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_1.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.java
new file mode 100644
index 0000000..5cb80f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_1 {
+    public static short i1 = 32000;
+    protected static short p1 = 32000;
+    private static short pvt1 = 32000;
+    
+    public short run(){
+        return i1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.d
new file mode 100644
index 0000000..d0f87a4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_11.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_11
+.super dot/junit/opcodes/sget_short/d/T_sget_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_short/d/T_sget_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_1.p1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.java
new file mode 100644
index 0000000..790a0de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_11 extends T_sget_short_1 {
+
+    public short run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.d
new file mode 100644
index 0000000..7a0a307
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_12.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_12
+.super dot/junit/opcodes/sget_short/d/T_sget_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_short/d/T_sget_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_1.pvt1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.java
new file mode 100644
index 0000000..ea41518
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_12 {
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.d
new file mode 100644
index 0000000..b37df82
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_13.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_13
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_13.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.java
new file mode 100644
index 0000000..4bc3105
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_13 {
+    public void run(){
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.d
new file mode 100644
index 0000000..3d79cd1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_14.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.d
new file mode 100644
index 0000000..d8751e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_15.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_15
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_15.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.d
new file mode 100644
index 0000000..48f416c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_16.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_16
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_16.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.d
new file mode 100644
index 0000000..1cc7398
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_17.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_17
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_17.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.d
new file mode 100644
index 0000000..7f3ff6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_18.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_18
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_18.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.d
new file mode 100644
index 0000000..b9841ae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_19.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_19
+.super java/lang/Object
+
+.field public static i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_19.i1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.d
new file mode 100644
index 0000000..1ae3803
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_20.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_20
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v0, dot.junit.opcodes.sget_short.d.T_sget_short_20.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.d
new file mode 100644
index 0000000..9dcbd247
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_3.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_3
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-short v3, dot.junit.opcodes.sget_short.d.T_sget_short_3.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.d
new file mode 100644
index 0000000..ab070e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_4.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_4
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_4.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.dfh
new file mode 100644
index 0000000..c19a74a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_short/d/T_sget_short_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_short/d/T_sget_short_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 4d504536
+    36 45 50 4D 
+// parsed: offset 12, len 20: signature           : d415...9794
+    D4 15 7B CD 4D D8 21 C3 FF 53 0E DE B1 2F 9E 3D 0D 47 97 94 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 353 (0x000161) "Ljava/lang/Object;"
+    61 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 373 (0x000175) "S"
+    75 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 376 (0x000178) "T_sget_short_4.java"
+    78 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 397 (0x00018d) "V"
+    8D 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 400 (0x000190) "i1"
+    90 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 404 (0x000194) "run"
+    94 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "S"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 3 (0x000003) "S"
+//     return_type_idx: 2 (0x000002) "S"
+//     parameters_off: 0 (0x000000)
+    03 00 00 00 02 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 0 (0x000000)  type_idx: 2 (0x000002) name_idx: 6 (0x000006) "i1"
+    00 00 02 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    00 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    00 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_short_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 409 (0x000199)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 99 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_short.d.T_sget_short_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_short.d.T_sget_short_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-short v1, Ldot/junit/opcodes/sget_short/d/T_sget_short_4;.i1:S // field@0000
+//@mod            66 01 00 00 
+            66 01 00 01 
+        // parsed: offset 292, len 2: |0002: return v1
+            0F 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 49: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 73 68 6F 72 74 2F 64 2F 54 5F 73 67 65 74 5F 73 68 6F 72 74 5F 34 3B 00 
+// parsed: offset 353, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 373, len 3: TYPE_STRING_DATA_ITEM [3] "S"
+    01 53 00 
+// parsed: offset 376, len 21: TYPE_STRING_DATA_ITEM [4] "T_sget_short_4.java"
+    13 54 5F 73 67 65 74 5F 73 68 6F 72 74 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 397, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 400, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 404, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_short/d/T_sget_short_4;"
+    // parsed: offset 409, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 410, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 411, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 412, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 413, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 414, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 415, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 416, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 419, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 421, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 422, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 423, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 425, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 409 (0x000199)
+        00 20 00 00 01 00 00 00 99 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.d
new file mode 100644
index 0000000..b7c451a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_5.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_5
+.super java/lang/Object
+
+.field public i1 S
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const v2, 77
+       iput-short v2, v3, dot.junit.opcodes.sget_short.d.T_sget_short_5.i1 S
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_5.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.java
new file mode 100644
index 0000000..c1dda0c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_5 {
+
+    public short i1 = 32000;
+    public short run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.d
new file mode 100644
index 0000000..ce1ec34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_6.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.TestStubs.TestStubField S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.java
new file mode 100644
index 0000000..1499a3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_6 {
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.d
new file mode 100644
index 0000000..2c82957
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_7.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_7no_class.i1 S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.java
new file mode 100644
index 0000000..823e90d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_7 {
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.d
new file mode 100644
index 0000000..645aa56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_short_8.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.T_sget_short_8.i1N S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.java
new file mode 100644
index 0000000..2c3ec32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_8 {
+    public short run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.d
new file mode 100644
index 0000000..85d6755
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_short.d.StubInitError
+.super java/lang/Object
+
+.field public static value S
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 1
+       div-int/2addr v1, v0
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sget_short.d.StubInitError.value S
+       return-void
+.end method
+
+
+.source T_sget_short_9.java
+.class public dot.junit.opcodes.sget_short.d.T_sget_short_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()S
+.limit regs 3
+
+       sget-short v1, dot.junit.opcodes.sget_short.d.StubInitError.value S
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.java
new file mode 100644
index 0000000..512ef4c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_short/d/T_sget_short_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_short.d;
+
+public class T_sget_short_9 {
+    
+    public short run(){
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/TestStubs.java
new file mode 100644
index 0000000..3538a38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/TestStubs.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_wide;
+
+public class TestStubs {
+    // used by testVFE4
+    private static long TestStubField = 50;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/Test_sget_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/Test_sget_wide.java
new file mode 100644
index 0000000..8ecbeb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/Test_sget_wide.java
@@ -0,0 +1,280 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_1;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_11;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_12;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_13;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_2;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_5;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_6;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_7;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_8;
+import dot.junit.opcodes.sget_wide.d.T_sget_wide_9;
+
+public class Test_sget_wide extends DxTestCase {
+
+    /**
+     * @title type - long
+     */
+    public void testN1() {
+        T_sget_wide_1 t = new T_sget_wide_1();
+        assertEquals(12345679890123l, t.run());
+    }
+
+    /**
+     * @title type - double
+     */
+    public void testN2() {
+        T_sget_wide_2 t = new T_sget_wide_2();
+        assertEquals(123.0, t.run());
+    }
+
+    /**
+     * @title access protected field from subclass
+     */
+    public void testN3() {
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_1
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_11
+        T_sget_wide_11 t = new T_sget_wide_11();
+        assertEquals(10, t.run());
+    }
+
+    /**
+     * @constraint A12
+     * @title attempt to access non-static field
+     */
+    public void testE1() {
+
+        T_sget_wide_5 t = new T_sget_wide_5();
+        try {
+            t.run();
+            fail("expected IncompatibleClassChangeError");
+        } catch (IncompatibleClassChangeError e) {
+            // expected
+        }
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+
+        T_sget_wide_9 t = new T_sget_wide_9();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title read long from integer field - only field with same name but
+     * different type exists
+     */
+    public void testVFE3() {
+        try {
+            new T_sget_wide_13().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read inaccessible field.
+     */
+    public void testVFE4() {
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_6
+        //@uses dot.junit.opcodes.sget_wide.TestStubs
+        try {
+            new T_sget_wide_6().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read field of undefined class.
+     */
+    public void testVFE5() {
+        try {
+            new T_sget_wide_7().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read undefined field.
+     */
+    public void testVFE6() {
+        try {
+            new T_sget_wide_8().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to read superclass' private field from subclass.
+     */
+    public void testVFE7() {
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_12
+        //@uses dot.junit.opcodes.sget_wide.d.T_sget_wide_1
+        try {
+            new T_sget_wide_12().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sget-wide shall not work for reference fields
+     */
+    public void testVFE8() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget-wide shall not work for short fields
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_15");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget-wide shall not work for boolean fields
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_16");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget-wide shall not work for char fields
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_17");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget-wide shall not work for byte fields
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget-wide shall not work for float fields
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_19");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sget-wide shall not work for int fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sget_wide.d.T_sget_wide_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.d
new file mode 100644
index 0000000..ffd5cb4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.d
@@ -0,0 +1,51 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_1.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_1
+.super java/lang/Object
+
+.field public static i1 J
+.field protected static p1 J
+.field private static pvt1 J
+
+.method static <clinit>()V
+.limit regs 2
+       const-wide v0, 12345679890123
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.i1 J
+
+       const-wide v0, 10
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.p1 J
+
+       const-wide v0, 20
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.pvt1 J
+
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.java
new file mode 100644
index 0000000..e995709
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_1.java
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_1 {
+    public static long i1 = 12345679890123l;
+    protected static long p1 = 10;
+    private static long pvt1 = 20;
+    
+    public long run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.d
new file mode 100644
index 0000000..3485b03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_11.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_11
+.super dot/junit/opcodes/sget_wide/d/T_sget_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_wide/d/T_sget_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.p1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.java
new file mode 100644
index 0000000..41f07c7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_11.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_11 extends T_sget_wide_1 {
+
+    public long run(){
+        return p1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.d
new file mode 100644
index 0000000..36c4678
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_12.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_12
+.super dot/junit/opcodes/sget_wide/d/T_sget_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sget_wide/d/T_sget_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_1.pvt1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.java
new file mode 100644
index 0000000..9dc55c6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_12.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_12 {
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.d
new file mode 100644
index 0000000..308bdd1e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_13.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_13
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_13.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.java
new file mode 100644
index 0000000..21fc969
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_13.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_13 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.d
new file mode 100644
index 0000000..6e32d54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_14.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_14.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_14
+.super java/lang/Object
+
+.field public static i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_14.i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.d
new file mode 100644
index 0000000..685bf22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_15.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_15.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_15
+.super java/lang/Object
+
+.field public static i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_15.i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.d
new file mode 100644
index 0000000..5548cdc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_16.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_16.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_16
+.super java/lang/Object
+
+.field public static i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_16.i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.d
new file mode 100644
index 0000000..961c845
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_17.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_17
+.super java/lang/Object
+
+.field public static i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_17.i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.d
new file mode 100644
index 0000000..8dba06c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_18.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_18.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_18
+.super java/lang/Object
+
+.field public static i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_18.i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.d
new file mode 100644
index 0000000..e8d5722
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_19.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_19.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_19
+.super java/lang/Object
+
+.field public static i1 F
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_19.i1 F
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.d
new file mode 100644
index 0000000..4e12946
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_2.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_2
+.super java/lang/Object
+
+.field public static val D
+
+.method static <clinit>()V
+.limit regs 2
+       const-wide v0, 123.0
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_2.val D
+       return-void
+.end method
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()D
+.limit regs 4
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_2.val D
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.java
new file mode 100644
index 0000000..ea40542
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_2.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_2 {
+
+    public static double val = 123.0d;
+    
+    public double run() {
+        return val;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.d
new file mode 100644
index 0000000..1861a25
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_20.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_20
+.super java/lang/Object
+
+.field public static i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_20.i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.d
new file mode 100644
index 0000000..e672291
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_3.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_3
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sget-wide v3, dot.junit.opcodes.sget_wide.d.T_sget_wide_3.i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.d
new file mode 100644
index 0000000..9924345
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_4.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_4
+.super java/lang/Object
+
+.field public static i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_4.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dfh
new file mode 100644
index 0000000..aa8661b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dfh
@@ -0,0 +1,266 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sget_wide/d/T_sget_wide_4.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7da34431
+    31 44 A3 7D 
+// parsed: offset 12, len 20: signature           : 3c53...7396
+    3C 53 BF B1 B1 75 57 C6 91 52 F2 94 23 6C C3 BF 3B B4 73 96 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 192 (0x0000c0)
+    C0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 216 (0x0000d8)
+    D8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 312
+    38 01 00 00 
+// parsed: offset 108, len 4: data_off            : 248 (0x0000f8)
+    F8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 296 (0x000128) "<init>"
+    28 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 304 (0x000130) "J"
+    30 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 307 (0x000133) "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+    33 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 354 (0x000162) "Ljava/lang/Object;"
+    62 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 374 (0x000176) "T_sget_wide_4.java"
+    76 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 394 (0x00018a) "V"
+    8A 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 397 (0x00018d) "i1"
+    8D 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 401 (0x000191) "run"
+    91 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "J"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 1 (0x000001) "J"
+//     return_type_idx: 0 (0x000000) "J"
+//     parameters_off: 0 (0x000000)
+    01 00 00 00 00 00 00 00 00 00 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 6 (0x000006) "i1"
+    01 00 00 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 192, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 200, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 208, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 216, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sget_wide_4.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 406 (0x000196)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 96 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sget_wide.d.T_sget_wide_4.<init>"
+    // parsed: offset 248, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 250, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 252, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 254, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 256, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 260, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 264, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 270, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sget_wide.d.T_sget_wide_4.run"
+    // parsed: offset 272, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 274, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 276, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 278, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 280, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 284, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 288, len 4: |0000: sget-wide v1, Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;.i1:J // field@0000
+//@mod            61 01 00 00 
+            61 01 00 01
+        // parsed: offset 292, len 2: |0002: return-wide v1
+            10 01 
+    // tries: 
+    // handlers: 
+// parsed: offset 294, len 2: PADDING
+    00 00 
+// parsed: offset 296, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 304, len 3: TYPE_STRING_DATA_ITEM [1] "J"
+    01 4A 00 
+// parsed: offset 307, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 67 65 74 5F 77 69 64 65 2F 64 2F 54 5F 73 67 65 74 5F 77 69 64 65 5F 34 3B 00 
+// parsed: offset 354, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 374, len 20: TYPE_STRING_DATA_ITEM [4] "T_sget_wide_4.java"
+    12 54 5F 73 67 65 74 5F 77 69 64 65 5F 34 2E 6A 61 76 61 00 
+// parsed: offset 394, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 397, len 4: TYPE_STRING_DATA_ITEM [6] "i1"
+    02 69 31 00 
+// parsed: offset 401, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sget_wide/d/T_sget_wide_4;"
+    // parsed: offset 406, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 407, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 408, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 409, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 410, len 1: field_idx_diff: 0 (field_idx: 0 "i1")
+                00 
+            // parsed: offset 411, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 412, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 413, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 416, len 2: code_off: 248 (0x0000f8)
+                F8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 418, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 419, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 420, len 2: code_off: 272 (0x000110)
+                90 02 
+// parsed: offset 422, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        04 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 192 (0x0000c0)
+        05 00 00 00 03 00 00 00 C0 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 216 (0x0000d8)
+        06 00 00 00 01 00 00 00 D8 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 248 (0x0000f8)
+        01 20 00 00 02 00 00 00 F8 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 296 (0x000128)
+        02 20 00 00 08 00 00 00 28 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 406 (0x000196)
+        00 20 00 00 01 00 00 00 96 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.d
new file mode 100644
index 0000000..e323dc0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_5.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_5
+.super java/lang/Object
+
+.field public i1 J
+
+.method public <init>()V
+.limit regs 4
+
+       invoke-direct {v3}, java/lang/Object/<init>()V
+
+       const-wide v0, 5
+       iput-wide v0, v3, dot.junit.opcodes.sget_wide.d.T_sget_wide_5.i1 J
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_5.i1 J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.java
new file mode 100644
index 0000000..6021edd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_5 {
+
+    public long i1 = 5;
+    public long run(){
+        return i1;
+    }
+}
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.d
new file mode 100644
index 0000000..48e59f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_6.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.TestStubs.TestStubField J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.java
new file mode 100644
index 0000000..f2744cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_6.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_6 {
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.d
new file mode 100644
index 0000000..b34ddd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_7.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v0, dot.junit.opcodes.sget_wide.d.T_sget_wide_7no_class.i1 J
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.java
new file mode 100644
index 0000000..e97e416
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_7.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_7 {
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.d
new file mode 100644
index 0000000..d53c7dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sget_wide_8.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.T_sget_wide_8.i1N J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.java
new file mode 100644
index 0000000..95b2dbb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_8.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_8 {
+    public long run() {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.d
new file mode 100644
index 0000000..e223578
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sget_wide.d.StubInitError
+.super java/lang/Object
+
+.field public static value J
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       const-wide v0, 1    
+       sput-wide v0, dot.junit.opcodes.sget_wide.d.StubInitError.value J
+       return-void
+.end method
+
+
+.source T_sget_wide_9.java
+.class public dot.junit.opcodes.sget_wide.d.T_sget_wide_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()J
+.limit regs 3
+
+       sget-wide v1, dot.junit.opcodes.sget_wide.d.StubInitError.value J
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.java
new file mode 100644
index 0000000..a19f781
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sget_wide/d/T_sget_wide_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sget_wide.d;
+
+public class T_sget_wide_9 {
+    
+    public long run(){
+        return -99;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/Test_shl_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/Test_shl_int.java
new file mode 100644
index 0000000..5b5d6ee
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/Test_shl_int.java
@@ -0,0 +1,149 @@
+package dot.junit.opcodes.shl_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_int.d.T_shl_int_1;
+import dot.junit.opcodes.shl_int.d.T_shl_int_6;
+
+public class Test_shl_int extends DxTestCase {
+
+    /**
+     * @title 15 << 1
+     */
+    public void testN1() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(30, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 << 2
+     */
+    public void testN2() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(132, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 << 1
+     */
+    public void testN3() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(-30, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(0x80000000, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(66, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - float, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation float parameters makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_int_6 t = new T_shl_int_6();
+        try {
+            t.run(3.14f, 1.2f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(0xfffffffe, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shl_int_1 t = new T_shl_int_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int.d.T_shl_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int.d.T_shl_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int.d.T_shl_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int.d.T_shl_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.d
new file mode 100644
index 0000000..a9e9ede
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.d
@@ -0,0 +1,18 @@
+.source T_shl_int_1.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.java
new file mode 100644
index 0000000..4480d75
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_int.d;
+
+public class T_shl_int_1 {
+
+    public int run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.d
new file mode 100644
index 0000000..f1955e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_2.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int v0, v7, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.d
new file mode 100644
index 0000000..88fff38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_3.d
@@ -0,0 +1,18 @@
+.source T_shl_int_3.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       shl-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.d
new file mode 100644
index 0000000..2b2fd1e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_4.d
@@ -0,0 +1,18 @@
+.source T_shl_int_4.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       shl-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.d
new file mode 100644
index 0000000..1ae15e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_5.d
@@ -0,0 +1,18 @@
+.source T_shl_int_5.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.d
new file mode 100644
index 0000000..1527b6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.d
@@ -0,0 +1,18 @@
+.source T_shl_int_6.java
+.class public dot.junit.opcodes.shl_int.d.T_shl_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       shl-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.java
new file mode 100644
index 0000000..bb6806c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int/d/T_shl_int_6.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_int.d;
+
+public class T_shl_int_6 {
+
+    public int run(float a, float b) {
+        return (int)a << (int)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/Test_shl_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/Test_shl_int_2addr.java
new file mode 100644
index 0000000..7774bbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/Test_shl_int_2addr.java
@@ -0,0 +1,149 @@
+package dot.junit.opcodes.shl_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_1;
+import dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_6;
+
+public class Test_shl_int_2addr extends DxTestCase {
+
+    /**
+     * @title 15 << 1
+     */
+    public void testN1() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(30, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 << 2
+     */
+    public void testN2() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(132, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 << 1
+     */
+    public void testN3() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(-30, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(0x80000000, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(66, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - float, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation for float parameters makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_int_2addr_6 t = new T_shl_int_2addr_6();
+        try {
+            t.run(3.14f, 1.2f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(0xfffffffe, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shl_int_2addr_1 t = new T_shl_int_2addr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.d
new file mode 100644
index 0000000..380c8c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_1.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.java
new file mode 100644
index 0000000..69d8de4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_int_2addr.d;
+
+public class T_shl_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.d
new file mode 100644
index 0000000..bb92f80
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_2.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int/2addr v7, v8
+       return v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.d
new file mode 100644
index 0000000..7785e26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_3.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       shl-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.d
new file mode 100644
index 0000000..3860a02
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_4.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       shl-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.d
new file mode 100644
index 0000000..affe561
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_5.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shl-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.d
new file mode 100644
index 0000000..2299e9c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_shl_int_2addr_6.java
+.class public dot.junit.opcodes.shl_int_2addr.d.T_shl_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       shl-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.java
new file mode 100644
index 0000000..f82be9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_2addr/d/T_shl_int_2addr_6.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_int_2addr.d;
+
+public class T_shl_int_2addr_6 {
+
+    public int run(float a, float b) {
+        return (int)a << (int)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/Test_shl_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/Test_shl_int_lit8.java
new file mode 100644
index 0000000..186ddba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/Test_shl_int_lit8.java
@@ -0,0 +1,153 @@
+package dot.junit.opcodes.shl_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_1;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_2;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_3;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_4;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_5;
+import dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_6;
+
+public class Test_shl_int_lit8 extends DxTestCase {
+
+    /**
+     * @title 15 << 1
+     */
+    public void testN1() {
+        T_shl_int_lit8_1 t = new T_shl_int_lit8_1();
+        assertEquals(30, t.run(15));
+    }
+
+    /**
+     * @title 33 << 2
+     */
+    public void testN2() {
+        T_shl_int_lit8_2 t = new T_shl_int_lit8_2();
+        assertEquals(132, t.run(33));
+    }
+
+    /**
+     * @title -15 << 1
+     */
+    public void testN3() {
+        T_shl_int_lit8_1 t = new T_shl_int_lit8_1();
+        assertEquals(-30, t.run(-15));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_int_lit8_3 t = new T_shl_int_lit8_3();
+        assertEquals(0x80000000, t.run(1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shl_int_lit8_4 t = new T_shl_int_lit8_4();
+        assertEquals(66, t.run(33));
+    }
+    
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_int_lit8_6 t = new T_shl_int_lit8_6();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_int_lit8_3 t = new T_shl_int_lit8_3();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shl_int_lit8_1 t = new T_shl_int_lit8_1();
+        assertEquals(0xfffffffe, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_int_lit8_1 t = new T_shl_int_lit8_1();
+        assertEquals(0, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shl_int_lit8_5 t = new T_shl_int_lit8_5();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.d
new file mode 100644
index 0000000..8230b0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_1.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.java
new file mode 100644
index 0000000..31b0543
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_1.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_1 {
+    
+    public int run(int a) {
+        int b = 1;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.d
new file mode 100644
index 0000000..ebcef08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_10.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_10.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       shl-int/lit8 v0, v5, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.d
new file mode 100644
index 0000000..ab5d308
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_2.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.java
new file mode 100644
index 0000000..14f04e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_2.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_2 {
+    
+    public int run(int a) {
+        int b = 2;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.d
new file mode 100644
index 0000000..b7c3c3b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_3.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.java
new file mode 100644
index 0000000..7b76307
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_3.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_3 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.d
new file mode 100644
index 0000000..3416035
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_4.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 33
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.java
new file mode 100644
index 0000000..6b80a22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_4.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_4 {
+    
+    public int run(int a) {
+        int b = 33;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.d
new file mode 100644
index 0000000..bb0ebbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_5.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.java
new file mode 100644
index 0000000..f1703383
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_5.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_5 {
+    
+    public int run(int a) {
+        int b = 0;
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.d
new file mode 100644
index 0000000..3e2b9d5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_6.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       shl-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.java
new file mode 100644
index 0000000..e41def3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_6.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shl_int_lit8.d;
+
+public class T_shl_int_lit8_6 {
+    
+    public int run(float a) {
+        int b = 1;
+        return (int)a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.d
new file mode 100644
index 0000000..c2a0301
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_7.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_7.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shl-int/lit8 v0, v8, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.d
new file mode 100644
index 0000000..49062a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_8.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_8.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       shl-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.d
new file mode 100644
index 0000000..9d91c49
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_int_lit8/d/T_shl_int_lit8_9.d
@@ -0,0 +1,18 @@
+.source T_shl_int_lit8_9.java
+.class public dot.junit.opcodes.shl_int_lit8.d.T_shl_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       shl-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/Test_shl_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/Test_shl_long.java
new file mode 100644
index 0000000..d22ba92
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/Test_shl_long.java
@@ -0,0 +1,163 @@
+package dot.junit.opcodes.shl_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_long.d.T_shl_long_1;
+import dot.junit.opcodes.shl_long.d.T_shl_long_7;
+
+public class Test_shl_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 5000000000l, 3
+     */
+    public void testN1() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(40000000000l, t.run(5000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 5000000000l, 1
+     */
+    public void testN2() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(10000000000l, t.run(5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -5000000000l, 1
+     */
+    public void testN3() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(-10000000000l, t.run(-5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(0x8000000000000000l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(130l, t.run(65l, 65));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_long_7 t = new T_shl_long_7();
+        try {
+            t.run(4.67d, 1);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB2() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(0xfffffffe, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB4() {
+        T_shl_long_1 t = new T_shl_long_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int & int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float & int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference & int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long.d.T_shl_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.d
new file mode 100644
index 0000000..0293191
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.d
@@ -0,0 +1,18 @@
+.source T_shl_long_1.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.java
new file mode 100644
index 0000000..27e13ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_long.d;
+
+public class T_shl_long_1 {
+
+    public long run(long a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.d
new file mode 100644
index 0000000..1a5fe79
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_2.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long v0, v8, v11
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.d
new file mode 100644
index 0000000..0f33164
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_3.d
@@ -0,0 +1,18 @@
+.source T_shl_long_3.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 11
+
+       shl-long v0, v7, v9
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.d
new file mode 100644
index 0000000..4392e2a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_4.d
@@ -0,0 +1,18 @@
+.source T_shl_long_4.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.limit regs 11
+
+       shl-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.d
new file mode 100644
index 0000000..29ad593
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_5.d
@@ -0,0 +1,18 @@
+.source T_shl_long_5.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.limit regs 11
+
+       shl-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.d
new file mode 100644
index 0000000..105c0e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_6.d
@@ -0,0 +1,18 @@
+.source T_shl_long_6.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long v0, v7, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.d
new file mode 100644
index 0000000..ed9faf0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.d
@@ -0,0 +1,18 @@
+.source T_shl_long_7.java
+.class public dot.junit.opcodes.shl_long.d.T_shl_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 11
+
+       shl-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.java
new file mode 100644
index 0000000..ecc3e1f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long/d/T_shl_long_7.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_long.d;
+
+public class T_shl_long_7 {
+
+    public long run(double a, int b) {
+        return (long)a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/Test_shl_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/Test_shl_long_2addr.java
new file mode 100644
index 0000000..1113905
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/Test_shl_long_2addr.java
@@ -0,0 +1,163 @@
+package dot.junit.opcodes.shl_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_1;
+import dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_7;
+
+public class Test_shl_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 5000000000l, 3
+     */
+    public void testN1() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(40000000000l, t.run(5000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 5000000000l, 1
+     */
+    public void testN2() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(10000000000l, t.run(5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -5000000000l, 1
+     */
+    public void testN3() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(-10000000000l, t.run(-5000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(0x8000000000000000l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(130l, t.run(65l, 65));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shl_long_2addr_7 t = new T_shl_long_2addr_7();
+        try {
+            t.run(4.67d, 1);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB2() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB3() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(0xfffffffe, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB4() {
+        T_shl_long_2addr_1 t = new T_shl_long_2addr_1();
+        assertEquals(0l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.d
new file mode 100644
index 0000000..b2e3bb9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_1.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.java
new file mode 100644
index 0000000..569531d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_long_2addr.d;
+
+public class T_shl_long_2addr_1 {
+
+    public long run(long a, int b) {
+        return a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.d
new file mode 100644
index 0000000..fd4598a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_2.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long/2addr v8, v11
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.d
new file mode 100644
index 0000000..41c08f5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_3.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 11
+
+       shl-long/2addr v7, v9
+       return-wide v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.d
new file mode 100644
index 0000000..4c69423
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_4.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.limit regs 11
+
+       shl-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.d
new file mode 100644
index 0000000..bb9b45b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_5.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.limit regs 11
+
+       shl-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.d
new file mode 100644
index 0000000..50738c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_6.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shl-long/2addr v7, v10
+       return-wide v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.d
new file mode 100644
index 0000000..42b0717
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.d
@@ -0,0 +1,18 @@
+.source T_shl_long_2addr_7.java
+.class public dot.junit.opcodes.shl_long_2addr.d.T_shl_long_2addr_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 11
+
+       shl-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.java
new file mode 100644
index 0000000..f6978ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shl_long_2addr/d/T_shl_long_2addr_7.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shl_long_2addr.d;
+
+public class T_shl_long_2addr_7 {
+
+    public long run(double a, int b) {
+        return (long)a << b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/Test_shr_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/Test_shr_int.java
new file mode 100644
index 0000000..d81d7c8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/Test_shr_int.java
@@ -0,0 +1,150 @@
+package dot.junit.opcodes.shr_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_int.d.T_shr_int_1;
+import dot.junit.opcodes.shr_int.d.T_shr_int_6;
+
+public class Test_shr_int extends DxTestCase {
+
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(-8, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(16, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - float, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float parameters makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_int_6 t = new T_shr_int_6();
+        try {
+            t.run(3.14f, 1.2f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(0xc0000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shr_int_1 t = new T_shr_int_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int.d.T_shr_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int.d.T_shr_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int.d.T_shr_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int.d.T_shr_int_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.d
new file mode 100644
index 0000000..9eaa104
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.d
@@ -0,0 +1,18 @@
+.source T_shr_int_1.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.java
new file mode 100644
index 0000000..68a7062
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_int.d;
+
+public class T_shr_int_1 {
+
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.d
new file mode 100644
index 0000000..8800018
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_2.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int v0, v6, v8
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.d
new file mode 100644
index 0000000..1f0c5287
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_3.d
@@ -0,0 +1,18 @@
+.source T_shr_int_3.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       shr-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.d
new file mode 100644
index 0000000..eede586
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_4.d
@@ -0,0 +1,18 @@
+.source T_shr_int_4.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       shr-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.d
new file mode 100644
index 0000000..fe57998
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_5.d
@@ -0,0 +1,18 @@
+.source T_shr_int_5.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int v0, v5, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.d
new file mode 100644
index 0000000..0323c5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.d
@@ -0,0 +1,18 @@
+.source T_shr_int_6.java
+.class public dot.junit.opcodes.shr_int.d.T_shr_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       shr-int v0, v6, v7
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.java
new file mode 100644
index 0000000..86804e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int/d/T_shr_int_6.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_int.d;
+
+public class T_shr_int_6 {
+
+    public int run(float a, float b) {
+        return (int)a >> (int)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/Test_shr_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/Test_shr_int_2addr.java
new file mode 100644
index 0000000..b52cafe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/Test_shr_int_2addr.java
@@ -0,0 +1,150 @@
+package dot.junit.opcodes.shr_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_1;
+import dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_6;
+
+public class Test_shr_int_2addr extends DxTestCase {
+
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(-8, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(16, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - float, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_int_2addr_6 t = new T_shr_int_2addr_6();
+        try {
+            t.run(3.14f, 1.2f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(0xc0000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shr_int_2addr_1 t = new T_shr_int_2addr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.d
new file mode 100644
index 0000000..28765b3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_1.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.java
new file mode 100644
index 0000000..e00a03d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_int_2addr.d;
+
+public class T_shr_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.d
new file mode 100644
index 0000000..a7bc7ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_2.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int/2addr v6, v8
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.d
new file mode 100644
index 0000000..0a6ea58
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_3.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)I
+.limit regs 8
+
+       shr-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.d
new file mode 100644
index 0000000..3d4d094
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_4.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)I
+.limit regs 8
+
+       shr-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.d
new file mode 100644
index 0000000..4b35e2a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_5.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 8
+
+       shr-int/2addr v5, v7
+       return v5
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.d
new file mode 100644
index 0000000..b563cc0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_shr_int_2addr_6.java
+.class public dot.junit.opcodes.shr_int_2addr.d.T_shr_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)I
+.limit regs 8
+
+       shr-int/2addr v6, v7
+       return v6
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.java
new file mode 100644
index 0000000..f9e057f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_2addr/d/T_shr_int_2addr_6.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_int_2addr.d;
+
+public class T_shr_int_2addr_6 {
+
+    public int run(float a, float b) {
+        return (int)a >> (int)b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/Test_shr_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/Test_shr_int_lit8.java
new file mode 100644
index 0000000..af03cff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/Test_shr_int_lit8.java
@@ -0,0 +1,152 @@
+package dot.junit.opcodes.shr_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_1;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_2;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_3;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_4;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_5;
+import dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_6;
+
+public class Test_shr_int_lit8 extends DxTestCase {
+
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_shr_int_lit8_1 t = new T_shr_int_lit8_1();
+        assertEquals(7, t.run(15));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_shr_int_lit8_2 t = new T_shr_int_lit8_2();
+        assertEquals(8, t.run(33));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_shr_int_lit8_1 t = new T_shr_int_lit8_1();
+        assertEquals(-8, t.run(-15));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_int_lit8_3 t = new T_shr_int_lit8_3();
+        assertEquals(0, t.run(1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_shr_int_lit8_4 t = new T_shr_int_lit8_4();
+        assertEquals(16, t.run(33));
+    }
+    
+    /**
+     * @title Types of arguments - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_int_lit8_6 t = new T_shr_int_lit8_6();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_int_lit8_3 t = new T_shr_int_lit8_3();
+        assertEquals(0, t.run(0));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_shr_int_lit8_1 t = new T_shr_int_lit8_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_int_lit8_1 t = new T_shr_int_lit8_1();
+        assertEquals(0xc0000000, t.run(Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_shr_int_lit8_5 t = new T_shr_int_lit8_5();
+        assertEquals(1, t.run(1));
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.d
new file mode 100644
index 0000000..d34130f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_1.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.java
new file mode 100644
index 0000000..b784123
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_1.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_1 {
+    
+    public int run(int a) {
+        int b = 1;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.d
new file mode 100644
index 0000000..c94aa21
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_10.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_10.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_10
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.d
new file mode 100644
index 0000000..1a3b1bd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_2.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.java
new file mode 100644
index 0000000..1ab910d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_2.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_2 {
+    
+    public int run(int a) {
+        int b = 2;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.d
new file mode 100644
index 0000000..002cadf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_3.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, -1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.java
new file mode 100644
index 0000000..5e85115
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_3.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_3 {
+    
+    public int run(int a) {
+        int b = -1;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.d
new file mode 100644
index 0000000..3b9b507
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_4.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 33
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.java
new file mode 100644
index 0000000..cc49861
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_4.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_4 {
+    
+    public int run(int a) {
+        int b = 33;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.d
new file mode 100644
index 0000000..871040a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_5.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 0
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.java
new file mode 100644
index 0000000..b27c64b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_5.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_5 {
+    
+    public int run(int a) {
+        int b = 0;
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.d
new file mode 100644
index 0000000..761a30e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_6.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 8
+
+       shr-int/lit8 v0, v7, 1
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.java
new file mode 100644
index 0000000..a24bcb9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_6.java
@@ -0,0 +1,9 @@
+package dot.junit.opcodes.shr_int_lit8.d;
+
+public class T_shr_int_lit8_6 {
+    
+    public int run(float a) {
+        int b = 1;
+        return (int)a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.d
new file mode 100644
index 0000000..34559e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_7.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_7.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 8
+
+       shr-int/lit8 v0, v8, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.d
new file mode 100644
index 0000000..d157daf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_8.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_8.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 8
+
+       shr-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.d
new file mode 100644
index 0000000..ed24326
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_int_lit8/d/T_shr_int_lit8_9.d
@@ -0,0 +1,18 @@
+.source T_shr_int_lit8_9.java
+.class public dot.junit.opcodes.shr_int_lit8.d.T_shr_int_lit8_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 8
+
+       shr-int/lit8 v0, v6, 2
+       return v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/Test_shr_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/Test_shr_long.java
new file mode 100644
index 0000000..66bc8b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/Test_shr_long.java
@@ -0,0 +1,162 @@
+package dot.junit.opcodes.shr_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_long.d.T_shr_long_1;
+import dot.junit.opcodes.shr_long.d.T_shr_long_7;
+
+public class Test_shr_long extends DxTestCase {
+
+    /**
+     * @title Arguments =  40000000000l, 3
+     */
+    public void testN1() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -40000000000l, 1
+     */
+    public void testN3() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(-20000000000l, t.run(-40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(32, t.run(65l, 65));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and int makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_long_7 t = new T_shr_long_7();
+        try {
+            t.run(4.67d, 1);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB2() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB4() {
+        T_shr_long_1 t = new T_shr_long_1();
+        assertEquals(0xc000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long.d.T_shr_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.d
new file mode 100644
index 0000000..08c82f4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.d
@@ -0,0 +1,18 @@
+.source T_shr_long_1.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.java
new file mode 100644
index 0000000..e15d4144
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_long.d;
+
+public class T_shr_long_1 {
+
+    public long run(long a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.d
new file mode 100644
index 0000000..a87004a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_2.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long v0, v8, v11
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.d
new file mode 100644
index 0000000..9c78f73
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_3.d
@@ -0,0 +1,18 @@
+.source T_shr_long_3.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 11
+
+       shr-long v0, v7, v9
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.d
new file mode 100644
index 0000000..e6691cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_4.d
@@ -0,0 +1,18 @@
+.source T_shr_long_4.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.limit regs 11
+
+       shr-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.d
new file mode 100644
index 0000000..f5e4cb9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_5.d
@@ -0,0 +1,18 @@
+.source T_shr_long_5.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.limit regs 11
+
+       shr-long v0, v9, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.d
new file mode 100644
index 0000000..427d1c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_6.d
@@ -0,0 +1,18 @@
+.source T_shr_long_6.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long v0, v7, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.d
new file mode 100644
index 0000000..ad83dc8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.d
@@ -0,0 +1,18 @@
+.source T_shr_long_7.java
+.class public dot.junit.opcodes.shr_long.d.T_shr_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 11
+
+       shr-long v0, v8, v10
+       return-wide v0
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.java
new file mode 100644
index 0000000..ca42ea9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long/d/T_shr_long_7.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_long.d;
+
+public class T_shr_long_7 {
+
+    public long run(double a, int b) {
+        return (long)a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/Test_shr_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/Test_shr_long_2addr.java
new file mode 100644
index 0000000..22c4530
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/Test_shr_long_2addr.java
@@ -0,0 +1,163 @@
+package dot.junit.opcodes.shr_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_1;
+import dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_7;
+
+public class Test_shr_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 40000000000l, 3
+     */
+    public void testN1() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -40000000000l, 1
+     */
+    public void testN3() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(-20000000000l, t.run(-40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 64.
+     */
+    public void testN5() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(32, t.run(65l, 65));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this operation of double and int makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_shr_long_2addr_7 t = new T_shr_long_2addr_7();
+        try {
+            t.run(4.67d, 1);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB2() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB3() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB4() {
+        T_shr_long_2addr_1 t = new T_shr_long_2addr_1();
+        assertEquals(0xc000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.d
new file mode 100644
index 0000000..0e9c36b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_1.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.java
new file mode 100644
index 0000000..1c5691e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_1.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_long_2addr.d;
+
+public class T_shr_long_2addr_1 {
+
+    public long run(long a, int b) {
+        return a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.d
new file mode 100644
index 0000000..a0ebe17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_2.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_2.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long/2addr v8, v11
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.d
new file mode 100644
index 0000000..c07af2f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_3.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_3.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 11
+
+       shr-long/2addr v7, v9
+       return-wide v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.d
new file mode 100644
index 0000000..9db034e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_4.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_4.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)J
+.limit regs 11
+
+       shr-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.d
new file mode 100644
index 0000000..f1045cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_5.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_5.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FI)J
+.limit regs 11
+
+       shr-long/2addr v9, v10
+       return-wide v9
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.d
new file mode 100644
index 0000000..1326e76
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_6.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_6.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 11
+
+       shr-long/2addr v7, v10
+       return-wide v7
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.d
new file mode 100644
index 0000000..3b3db0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.d
@@ -0,0 +1,18 @@
+.source T_shr_long_2addr_7.java
+.class public dot.junit.opcodes.shr_long_2addr.d.T_shr_long_2addr_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 11
+
+       shr-long/2addr v8, v10
+       return-wide v8
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.java
new file mode 100644
index 0000000..ed3e1e8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/shr_long_2addr/d/T_shr_long_2addr_7.java
@@ -0,0 +1,8 @@
+package dot.junit.opcodes.shr_long_2addr.d;
+
+public class T_shr_long_2addr_7 {
+
+    public long run(double a, int b) {
+        return (long)a >> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/Test_sparse_switch.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/Test_sparse_switch.java
new file mode 100644
index 0000000..66f5c39
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/Test_sparse_switch.java
@@ -0,0 +1,223 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sparse_switch;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sparse_switch.d.T_sparse_switch_1;
+import dot.junit.opcodes.sparse_switch.d.T_sparse_switch_2
+;
+
+public class Test_sparse_switch extends DxTestCase {
+
+    /**
+     * @title try different values
+     */
+    public void testN1() {
+        T_sparse_switch_1 t = new T_sparse_switch_1();
+        assertEquals(2, t.run(-1));
+
+        assertEquals(-1, t.run(9));
+        assertEquals(20, t.run(10));
+        assertEquals(-1, t.run(11));
+
+        assertEquals(-1, t.run(14));
+        assertEquals(20, t.run(15));
+        assertEquals(-1, t.run(16));
+    }
+    
+    /**
+     * @title Types of arguments - float, int. Dalvik doens't distinguish 32-bits types internally,
+     * so this operation of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN2() {
+        try {
+            T_sparse_switch_2 t = new T_sparse_switch_2();
+            t.run(-1.23f);
+        } catch(Throwable t) {
+        }
+    }
+
+    /**
+     * @title Argument = Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_sparse_switch_1 t = new T_sparse_switch_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Argument = Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_sparse_switch_1 t = new T_sparse_switch_1();
+        assertEquals(-1, t.run(Integer.MIN_VALUE));
+    }
+    
+    /**
+     * @title Argument = 0
+     */
+    public void testB3() {
+        T_sparse_switch_1 t = new T_sparse_switch_1();
+        assertEquals(-1, t.run(0));
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+
+    /**
+     * @constraint B1 
+     * @title type of argument - double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  type of argument - long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title type of argument - reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8 
+     * @title branch target shall be inside the method
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8
+     * @title branch target shall not be "inside" instruction
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8
+     * @title offset to table shall be inside method
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_9");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8
+     * @title pairs shall be sorted in ascending order
+     */
+    public void testVFE9() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A8 
+     * @title number of entries in jump table
+     */
+    public void testVFE10() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B22
+     * @title sparse-switch-data pseudo-instructions must not be reachable by control flow 
+     */
+    public void testVFE11() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_13");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A8
+     * @title table has wrong ident code 
+     */
+    public void testVFE12() {
+        try {
+            Class.forName("dot.junit.opcodes.sparse_switch.d.T_sparse_switch_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.d
new file mode 100644
index 0000000..bd3aaa5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_sparse_switch_1.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.java
new file mode 100644
index 0000000..05d0ba9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_1 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.d
new file mode 100644
index 0000000..5853adb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_sparse_switch_11.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dfh
new file mode 100644
index 0000000..81eac01
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_11.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : cbc95483
+    83 54 C9 CB 
+// parsed: offset 12, len 20: signature           : 4fcf...5763
+    4F CF BE 7C 4E 38 25 A2 FB 35 7F 9B C3 DF 90 D5 67 72 57 63 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 417 (0x0001a1) "Ljava/lang/Object;"
+    A1 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 437 (0x0001b5) "T_sparse_switch_11.java"
+    B5 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 462 (0x0001ce) "V"
+    CE 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 465 (0x0001d1) "run"
+    D1 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_11.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 470 (0x0001d6)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D6 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_11.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_11.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+            2C 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 02 03 00 FF FF FF FF 0F 00 00 00 0A 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 31 3B 00 
+// parsed: offset 417, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 437, len 25: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_11.java"
+    17 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 31 2E 6A 61 76 61 00 
+// parsed: offset 462, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 465, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_11;"
+    // parsed: offset 470, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 471, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 473, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 474, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 475, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 478, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 480, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 481, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 482, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 470 (0x0001d6)
+        00 20 00 00 01 00 00 00 D6 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.d
new file mode 100644
index 0000000..feff623
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_sparse_switch_12.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_12
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dfh
new file mode 100644
index 0000000..2d9ee69
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b034540d
+    0D 54 34 B0 
+// parsed: offset 12, len 20: signature           : 17df...83d1
+    17 DF 40 0E 7B 84 69 AA B8 A3 BF 9B 70 B0 7D 1D CF 2A 83 D1 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 417 (0x0001a1) "Ljava/lang/Object;"
+    A1 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 437 (0x0001b5) "T_sparse_switch_12.java"
+    B5 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 462 (0x0001ce) "V"
+    CE 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 465 (0x0001d1) "run"
+    D1 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_12.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 470 (0x0001d6)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D6 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_12.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_12.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+            2C 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 02 04 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 32 3B 00 
+// parsed: offset 417, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 437, len 25: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_12.java"
+    17 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 32 2E 6A 61 76 61 00 
+// parsed: offset 462, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 465, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_12;"
+    // parsed: offset 470, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 471, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 473, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 474, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 475, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 478, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 480, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 481, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 482, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 470 (0x0001d6)
+        00 20 00 00 01 00 00 00 D6 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.java
new file mode 100644
index 0000000..c8f40c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_12.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_12 {
+
+    public void run() {
+        switch (1) {
+        case -1:
+            return;
+        case 10:
+            return;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.d
new file mode 100644
index 0000000..8c7814d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_13.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_sparse_switch_13.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_13
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+      goto Label0
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+Label0:
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.d
new file mode 100644
index 0000000..074c119
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 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.
+
+.source T_sparse_switch_14.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_14
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+      goto Label0
+Label0:
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dfh
new file mode 100644
index 0000000..3f17abc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dfh
@@ -0,0 +1,274 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_14.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 7a9e539f
+    9F 53 9E 7A 
+// parsed: offset 12, len 20: signature           : 0e0e...6b5f
+    0E 0E E3 52 F8 B0 52 FC 24 7F 08 37 B9 F7 17 79 D1 74 6B 5F 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 417 (0x0001a1) "Ljava/lang/Object;"
+    A1 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 437 (0x0001b5) "T_sparse_switch_14.java"
+    B5 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 462 (0x0001ce) "V"
+    CE 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 465 (0x0001d1) "run"
+    D1 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_14.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 470 (0x0001d6)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D6 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_14.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_14.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 2: |0000: goto 0001 // +0x0001
+            28 01 
+        // parsed: offset 282, len 6: |0001: sparse-switch v4, 00000010 //  +0x0000000f
+            2C 04 0F 00 00 00 
+        // parsed: offset 288, len 6: |0004: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 294, len 2: |0007: return v4
+            0F 04 
+        // parsed: offset 296, len 6: |0008: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 302, len 2: |000b: return v4
+            0F 04 
+        // parsed: offset 304, len 6: |000c: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 310, len 2: |000f: return v4
+            0F 04 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 05 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 56: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+    36 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 34 3B 00 
+// parsed: offset 417, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 437, len 25: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_14.java"
+    17 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 31 34 2E 6A 61 76 61 00 
+// parsed: offset 462, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 465, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_14;"
+    // parsed: offset 470, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 471, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 472, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 473, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 474, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 475, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 478, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 480, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 481, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 482, len 2: code_off: 264 (0x000108)
+                88 02 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 470 (0x0001d6)
+        00 20 00 00 01 00 00 00 D6 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.d
new file mode 100644
index 0000000..0f8b90b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.d
@@ -0,0 +1,50 @@
+; Copyright (C) 2008 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.
+
+.source T_sparse_switch_2.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 5
+
+Label3:
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.java
new file mode 100644
index 0000000..e9344d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_2.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_2 {
+
+    public int run(float i) {
+        switch ((int)i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.d
new file mode 100644
index 0000000..ce82bc9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_3.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 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.
+
+.source T_sparse_switch_3.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+Label3:
+       sparse-switch v5
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.d
new file mode 100644
index 0000000..36f8c8b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_4.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 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.
+
+.source T_sparse_switch_4.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(D)I
+.limit regs 5
+
+Label3:
+       sparse-switch v3
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.d
new file mode 100644
index 0000000..dc72c30
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_5.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 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.
+
+.source T_sparse_switch_5.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(J)I
+.limit regs 5
+
+Label3:
+       sparse-switch v3
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.d
new file mode 100644
index 0000000..25e418f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_6.d
@@ -0,0 +1,48 @@
+; Copyright (C) 2008 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.
+
+.source T_sparse_switch_6.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+Label3:
+       sparse-switch v3
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.d
new file mode 100644
index 0000000..67f3328
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_sparse_switch_7.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dfh
new file mode 100644
index 0000000..47d52d4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : ffcf536e
+    6E 53 CF FF 
+// parsed: offset 12, len 20: signature           : d1bd...dc70
+    D1 BD 9D 22 FC DA 04 F6 69 A9 22 1D 41 70 69 23 80 60 DC 70 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Object;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 436 (0x0001b4) "T_sparse_switch_7.java"
+    B4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 460 (0x0001cc) "V"
+    CC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_7.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_7.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_7.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+            2C 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 01 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 37 3B 00 
+// parsed: offset 416, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 436, len 24: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_7.java"
+    16 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 37 2E 6A 61 76 61 00 
+// parsed: offset 460, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_7;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 480, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 482, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.java
new file mode 100644
index 0000000..d7a7a59
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_7.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_7 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.d
new file mode 100644
index 0000000..ba0dae3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_sparse_switch_8.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dfh
new file mode 100644
index 0000000..f65851b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 3b52538d
+    8D 53 52 3B 
+// parsed: offset 12, len 20: signature           : d117...b84c
+    D1 17 6B A9 92 35 B7 F5 59 7E 60 68 BB 65 20 12 A4 EB B8 4C 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Object;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 436 (0x0001b4) "T_sparse_switch_8.java"
+    B4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 460 (0x0001cc) "V"
+    CC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_8.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_8.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_8.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+            2C 04 10 00 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+//@mod            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0C 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 38 3B 00 
+// parsed: offset 416, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 436, len 24: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_8.java"
+    16 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 38 2E 6A 61 76 61 00 
+// parsed: offset 460, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_8;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 480, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 482, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.java
new file mode 100644
index 0000000..a7176dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_8.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sparse_switch.d;
+
+public class T_sparse_switch_8 {
+
+    public int run(int i) {
+        switch (i) {
+        case -1:
+            return 2;
+        case 10:
+        case 15:
+            return 20;
+        default:
+            return -1;
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.d
new file mode 100644
index 0000000..2566813
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.d
@@ -0,0 +1,47 @@
+; Copyright (C) 2008 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.
+
+.source T_sparse_switch_9.java
+.class public dot.junit.opcodes.sparse_switch.d.T_sparse_switch_9
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 5
+
+       sparse-switch v4
+            -1 : Label9
+            10 : Label12
+            15 : Label12
+        sparse-switch-end
+Label6:
+       const v4, -1
+       return v4
+
+Label9:
+       const v4, 2
+       return v4
+
+Label12:
+       const v4, 20
+       return v4
+
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dfh
new file mode 100644
index 0000000..d5d171a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dfh
@@ -0,0 +1,276 @@
+// Processing 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dex'...
+// Opened 'out/classes_dasm/dot/junit/opcodes/sparse_switch/d/T_sparse_switch_9.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : b289520e
+    0E 52 89 B2 
+// parsed: offset 12, len 20: signature           : 9f96...637f
+    9F 96 22 76 3B 40 5B 16 24 C5 DA 48 89 0B 4A 96 70 E8 63 7F 
+// parsed: offset 32, len 4: file_size           : 620
+    6C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 484 (0x0001e4)
+    E4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 2
+    02 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 208 (0x0000d0)
+    D0 00 00 00 
+// parsed: offset 104, len 4: data_size           : 380
+    7C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 240 (0x0000f0)
+    F0 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 346 (0x00015a) "<init>"
+    5A 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 354 (0x000162) "I"
+    62 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 357 (0x000165) "II"
+    65 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 361 (0x000169) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+    69 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 416 (0x0001a0) "Ljava/lang/Object;"
+    A0 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 436 (0x0001b4) "T_sparse_switch_9.java"
+    B4 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 460 (0x0001cc) "V"
+    CC 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 463 (0x0001cf) "run"
+    CF 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 3 (0x000003) "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+    03 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "Ljava/lang/Object;"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 6 (0x000006) "V"
+    06 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 2 (0x000002) "II"
+//     return_type_idx: 0 (0x000000) "I"
+//     parameters_off: 340 (0x000154)
+    02 00 00 00 00 00 00 00 54 01 00 00 
+// parsed: offset 172, len 12: [1] 
+//     shorty_idx: 6 (0x000006) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    06 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 184, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    01 00 01 00 00 00 00 00 
+// parsed: offset 192, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 7 (0x000007) "run"
+    01 00 00 00 07 00 00 00 
+// parsed: offset 200, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 1 (0x000001) name_idx: 0 (0x000000) "<init>"
+    02 00 01 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 208, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 5 "T_sparse_switch_9.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 468 (0x0001d4)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 D4 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_9.<init>"
+    // parsed: offset 240, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 6: |0000: invoke-direct {v1}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sparse_switch.d.T_sparse_switch_9.run"
+    // parsed: offset 264, len 2: registers_size: 5
+        05 00 
+    // parsed: offset 266, len 2: ins_size: 2
+        02 00 
+    // parsed: offset 268, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 270, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 272, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 276, len 4: insns_size: 30
+        1E 00 00 00 
+    // insns:
+        // parsed: offset 280, len 6: |0000: sparse-switch v4, 00000010 //  +0x00000010
+//@mod            2C 04 10 00 00 00 
+            2C 04 10 01 00 00 
+        // parsed: offset 286, len 6: |0003: const v4, #float nan // #0xffffffff int
+            14 04 FF FF FF FF 
+        // parsed: offset 292, len 2: |0006: return v4
+            0F 04 
+        // parsed: offset 294, len 6: |0007: const v4, #float 0.000000 // #0x00000002 int
+            14 04 02 00 00 00 
+        // parsed: offset 300, len 2: |000a: return v4
+            0F 04 
+        // parsed: offset 302, len 6: |000b: const v4, #float 0.000000 // #0x00000014 int
+            14 04 14 00 00 00 
+        // parsed: offset 308, len 2: |000e: return v4
+            0F 04 
+        // parsed: offset 310, len 2: |000f: nop // spacer
+            00 00 
+        // parsed: offset 312, len 28: |0010: sparse-switch-data (14 units)
+            00 02 03 00 FF FF FF FF 0A 00 00 00 0F 00 00 00 07 00 00 00 0B 00 00 00 0B 00 00 00 
+    // tries: 
+    // handlers: 
+// TYPE_LIST
+    // parsed: offset 340, len 4: size: 1
+        01 00 00 00 
+    // parsed: offset 344, len 2: type_item [0] type_idx: 0
+        00 00 
+// parsed: offset 346, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 354, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 357, len 4: TYPE_STRING_DATA_ITEM [2] "II"
+    02 49 49 00 
+// parsed: offset 361, len 55: TYPE_STRING_DATA_ITEM [3] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+    35 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 61 72 73 65 5F 73 77 69 74 63 68 2F 64 2F 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 39 3B 00 
+// parsed: offset 416, len 20: TYPE_STRING_DATA_ITEM [4] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 436, len 24: TYPE_STRING_DATA_ITEM [5] "T_sparse_switch_9.java"
+    16 54 5F 73 70 61 72 73 65 5F 73 77 69 74 63 68 5F 39 2E 6A 61 76 61 00 
+// parsed: offset 460, len 3: TYPE_STRING_DATA_ITEM [6] "V"
+    01 56 00 
+// parsed: offset 463, len 5: TYPE_STRING_DATA_ITEM [7] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sparse_switch/d/T_sparse_switch_9;"
+    // parsed: offset 468, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 469, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 470, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 471, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 472, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 473, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 476, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 478, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 479, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 480, len 2: code_off: 264 (0x000108)
+                88 02 
+// parsed: offset 482, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 484, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 488, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 500, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 512, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 524, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 02 00 00 00 A0 00 00 00 
+    // parsed: offset 536, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 184 (0x0000b8)
+        05 00 00 00 03 00 00 00 B8 00 00 00 
+    // parsed: offset 548, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 208 (0x0000d0)
+        06 00 00 00 01 00 00 00 D0 00 00 00 
+    // parsed: offset 560, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 240 (0x0000f0)
+        01 20 00 00 02 00 00 00 F0 00 00 00 
+    // parsed: offset 572, len 12: [7] type: 0x1001 TYPE_TYPE_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 340 (0x000154)
+        01 10 00 00 01 00 00 00 54 01 00 00 
+    // parsed: offset 584, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 346 (0x00015a)
+        02 20 00 00 08 00 00 00 5A 01 00 00 
+    // parsed: offset 596, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 468 (0x0001d4)
+        00 20 00 00 01 00 00 00 D4 01 00 00 
+    // parsed: offset 608, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 484 (0x0001e4)
+        00 10 00 00 01 00 00 00 E4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/TestStubs.java
new file mode 100644
index 0000000..581e945
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput;
+
+public class TestStubs {
+    // used by testVFE9
+    static int TestStubField = 0;
+    
+    // used by testE5
+    public static final int TestStubFieldFinal = 0;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/Test_sput.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/Test_sput.java
new file mode 100644
index 0000000..8b73bb5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/Test_sput.java
@@ -0,0 +1,330 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput.d.T_sput_1;
+import dot.junit.opcodes.sput.d.T_sput_10;
+import dot.junit.opcodes.sput.d.T_sput_11;
+import dot.junit.opcodes.sput.d.T_sput_12;
+import dot.junit.opcodes.sput.d.T_sput_13;
+import dot.junit.opcodes.sput.d.T_sput_14;
+import dot.junit.opcodes.sput.d.T_sput_15;
+import dot.junit.opcodes.sput.d.T_sput_17;
+import dot.junit.opcodes.sput.d.T_sput_19;
+import dot.junit.opcodes.sput.d.T_sput_5;
+import dot.junit.opcodes.sput.d.T_sput_7;
+import dot.junit.opcodes.sput.d.T_sput_8;
+import dot.junit.opcodes.sput.d.T_sput_9;
+
+
+public class Test_sput extends DxTestCase {
+
+    /**
+     * @title type - int
+     */
+    public void testN1() {
+        T_sput_1 t = new T_sput_1();
+        assertEquals(0, T_sput_1.st_i1);
+        t.run();
+        assertEquals(1000000, T_sput_1.st_i1);
+    }
+
+    /**
+     * @title type - float
+     */
+    public void testN2() {
+        T_sput_19 t = new T_sput_19();
+        assertEquals(0.0f, T_sput_19.st_f1);
+        t.run();
+        assertEquals(3.14f, T_sput_19.st_f1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN3() {
+        T_sput_12 t = new T_sput_12();
+        assertEquals(0, T_sput_12.st_i1);
+        t.run();
+        assertEquals(1000000, T_sput_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput.d.T_sput_1
+        //@uses dot.junit.opcodes.sput.d.T_sput_14
+        T_sput_14 t = new T_sput_14();
+        assertEquals(0, T_sput_14.getProtectedField());
+        t.run();
+        assertEquals(1000000, T_sput_14.getProtectedField());
+    }
+
+    /**
+     * @title Trying to put float into integer field. Dalvik doens't distinguish 32-bits types
+     * internally, so this operation makes no sense but shall not crash the VM.
+     */
+    public void testN6() {
+        T_sput_5 t = new  T_sput_5();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_13 t = new T_sput_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title  constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title  put integer into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify double field
+     * with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput.TestStubs
+        //@uses dot.junit.opcodes.sput.d.T_sput_8
+        try {
+            new T_sput_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_sput_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_sput_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput.d.T_sput_1
+        //@uses dot.junit.opcodes.sput.d.T_sput_15
+        try {
+             new T_sput_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput shall not work for boolean fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput shall not work for byte fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput.d.T_sput_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput.TestStubs
+        //@uses dot.junit.opcodes.sput.d.T_sput_11
+    	try {
+            new T_sput_11().run();
+            fail("expected a verification exception");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.d
new file mode 100644
index 0000000..748fd1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_1.java
+.class public dot.junit.opcodes.sput.d.T_sput_1
+.super java/lang/Object
+
+.field public static st_i1 I
+.field protected static st_p1 I
+.field private static st_pvt1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()I
+.limit regs 2
+
+       sget v0, dot.junit.opcodes.sput.d.T_sput_1.st_pvt1 I
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_1.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.java
new file mode 100644
index 0000000..3bc4484
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput.d;
+
+public class T_sput_1 {
+    public static int st_i1;
+    protected static int st_p1;
+    private static int st_pvt1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+    
+    public static int getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.d
new file mode 100644
index 0000000..d753fd4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_10.java
+.class public dot.junit.opcodes.sput.d.T_sput_10
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_10.st_i1N I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.java
new file mode 100644
index 0000000..01a9d6b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput.d;
+
+public class T_sput_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.d
new file mode 100644
index 0000000..90cc7c0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_11.java
+.class public dot.junit.opcodes.sput.d.T_sput_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.TestStubs.TestStubFieldFinal I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.java
new file mode 100644
index 0000000..1f7ca52
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput.d;
+
+public class T_sput_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.d
new file mode 100644
index 0000000..6543443
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_12.java
+.class public dot.junit.opcodes.sput.d.T_sput_12
+.super java/lang/Object
+
+.field public static final st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_12.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.java
new file mode 100644
index 0000000..8e5f7a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput.d;
+
+public class T_sput_12 {
+    public static int st_i1;
+    
+    public void run() {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.d
new file mode 100644
index 0000000..f6c9d9f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput.d.StubInitError
+.super java/lang/Object
+
+.field public static value I
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput v1, dot.junit.opcodes.sput.d.StubInitError.value I
+       return-void
+.end method
+
+
+.source T_sput_13.java
+.class public dot.junit.opcodes.sput.d.T_sput_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.StubInitError.value I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.java
new file mode 100644
index 0000000..4693899
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput.d;
+
+class StubInitError {
+    static int value = 5 / 0; 
+}
+
+public class T_sput_13 {
+    
+    public void run() {
+        StubInitError.value = 12;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.d
new file mode 100644
index 0000000..89cab9e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_14.java
+.class public dot.junit.opcodes.sput.d.T_sput_14
+.super dot/junit/opcodes/sput/d/T_sput_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput/d/T_sput_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()I
+.limit regs 2
+
+       sget v0, dot.junit.opcodes.sput.d.T_sput_1.st_p1 I
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_1.st_p1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.java
new file mode 100644
index 0000000..102f226
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput.d;
+
+public class T_sput_14 extends T_sput_1{
+    
+    public void run() {
+        T_sput_1.st_p1 = 1000000;
+    }
+    
+    public static int getProtectedField(){
+        return T_sput_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.d
new file mode 100644
index 0000000..e2723fe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_15.java
+.class public dot.junit.opcodes.sput.d.T_sput_15
+.super dot/junit/opcodes/sput/d/T_sput_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput/d/T_sput_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 12321
+       sput v1, dot.junit.opcodes.sput.d.T_sput_1.st_pvt1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.java
new file mode 100644
index 0000000..25944f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput.d;
+
+public class T_sput_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_16.java
new file mode 100644
index 0000000..3360d43
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_16.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput.d;
+
+public class T_sput_16 {
+    public static Object o;
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.d
new file mode 100644
index 0000000..ce6a0a8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_17.java
+.class public dot.junit.opcodes.sput.d.T_sput_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_17.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.java
new file mode 100644
index 0000000..c96b5eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput.d;
+
+public class T_sput_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_18.d
new file mode 100644
index 0000000..7a79061
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_18.java
+.class public dot.junit.opcodes.sput.d.T_sput_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.d
new file mode 100644
index 0000000..d0f53cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_19.java
+.class public dot.junit.opcodes.sput.d.T_sput_19
+.super java/lang/Object
+
+.field public static st_f1 F
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+       sput v1, dot.junit.opcodes.sput.d.T_sput_19.st_f1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.java
new file mode 100644
index 0000000..854e9fd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_19.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput.d;
+
+public class T_sput_19 {
+    public static float st_f1;
+    
+    
+    public void run() {
+        st_f1 = 3.14f;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_2.d
new file mode 100644
index 0000000..9989c88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_2.java
+.class public dot.junit.opcodes.sput.d.T_sput_2
+.super java/lang/Object
+
+.field public static st_d1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const-wide v1, 1000000.000000
+       sput v1, dot.junit.opcodes.sput.d.T_sput_2.st_d1 D
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_20.d
new file mode 100644
index 0000000..9229d34
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_20.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_20.java
+.class public dot.junit.opcodes.sput.d.T_sput_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v3, 0
+       sput v3, dot.junit.opcodes.sput.d.T_sput_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_21.d
new file mode 100644
index 0000000..bc08d1d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_21.java
+.class public dot.junit.opcodes.sput.d.T_sput_21
+.super java/lang/Object
+
+.field public static st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1234    
+       sput v0, dot.junit.opcodes.sput.d.T_sput_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_22.d
new file mode 100644
index 0000000..ff17473
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_22.java
+.class public dot.junit.opcodes.sput.d.T_sput_22
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput v0, dot.junit.opcodes.sput.d.T_sput_22.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_23.d
new file mode 100644
index 0000000..10cdb15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_23.java
+.class public dot.junit.opcodes.sput.d.T_sput_23
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput v0, dot.junit.opcodes.sput.d.T_sput_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_24.d
new file mode 100644
index 0000000..5b6bac3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_24.java
+.class public dot.junit.opcodes.sput.d.T_sput_24
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput v0, dot.junit.opcodes.sput.d.T_sput_24.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.d
new file mode 100644
index 0000000..22aaeef9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_3.java
+.class public dot.junit.opcodes.sput.d.T_sput_3
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1234
+       sput v0, dot.junit.opcodes.sput.d.T_sput_3.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.dfh
new file mode 100644
index 0000000..f7d95ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput/d/T_sput_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput/d/T_sput_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 07553f66
+    66 3F 55 07 
+// parsed: offset 12, len 20: signature           : 2441...71d9
+    24 41 F7 4C E7 A3 98 B5 AC 67 0E F8 6B D1 13 E3 DD 10 71 D9 
+// parsed: offset 32, len 4: file_size           : 540
+    1C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 404 (0x000194)
+    94 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 304
+    30 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "I"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 336 (0x000150) "Ljava/lang/Object;"
+    50 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 356 (0x000164) "T_sput_3.java"
+    64 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 371 (0x000173) "V"
+    73 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 374 (0x000176) "run"
+    76 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 379 (0x00017b) "st_i1"
+    7B 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "I"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput/d/T_sput_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 386 (0x000182)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 82 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput.d.T_sput_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput.d.T_sput_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x000004d2 int
+            14 00 D2 04 00 00 
+        // parsed: offset 282, len 4: |0003: sput v0, Ldot/junit/opcodes/sput/d/T_sput_3;.st_i1:I // field@0000
+//@mod            67 00 00 00 
+            67 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "I"
+    01 49 00 
+// parsed: offset 299, len 37: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    23 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 2F 64 2F 54 5F 73 70 75 74 5F 33 3B 00 
+// parsed: offset 336, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 356, len 15: TYPE_STRING_DATA_ITEM [4] "T_sput_3.java"
+    0D 54 5F 73 70 75 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 371, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 374, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 379, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput/d/T_sput_3;"
+    // parsed: offset 386, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 387, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 388, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 389, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 390, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 391, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 392, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 393, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 396, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 399, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 400, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 402, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 404, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 408, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 420, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 432, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 444, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 456, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 468, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 480, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 492, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 504, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 516, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 386 (0x000182)
+        00 20 00 00 01 00 00 00 82 01 00 00 
+    // parsed: offset 528, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 10 00 00 01 00 00 00 94 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_4.d
new file mode 100644
index 0000000..2ca3434
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_4.java
+.class public dot.junit.opcodes.sput.d.T_sput_4
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput v3, dot.junit.opcodes.sput.d.T_sput_4.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.d
new file mode 100644
index 0000000..25a88ba
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_5.java
+.class public dot.junit.opcodes.sput.d.T_sput_5
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)V
+.limit regs 3
+
+       sput v2, dot.junit.opcodes.sput.d.T_sput_5.st_i1 I
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.java
new file mode 100644
index 0000000..1625283
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_5.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput.d;
+
+public class T_sput_5 {
+    public static int st_i1;
+    
+    public void run(float f) {
+        st_i1 = 1000000;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.d
new file mode 100644
index 0000000..7bad17d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_7.java
+.class public dot.junit.opcodes.sput.d.T_sput_7
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput v1, dot.junit.opcodes.sput.d.T_sput_7.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.java
new file mode 100644
index 0000000..8b22c00
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput.d;
+
+public class T_sput_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.d
new file mode 100644
index 0000000..f1b1561
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_8.java
+.class public dot.junit.opcodes.sput.d.T_sput_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput v1, dot.junit.opcodes.sput.TestStubs.TestStubField I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.java
new file mode 100644
index 0000000..5ccae38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput.d;
+
+public class T_sput_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.d
new file mode 100644
index 0000000..2e4fe0e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_9.java
+.class public dot.junit.opcodes.sput.d.T_sput_9
+.super java/lang/Object
+
+.field public st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput v1, dot.junit.opcodes.sput.d.T_sput_9noclass.st_i1 I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.java
new file mode 100644
index 0000000..b8f71e7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput/d/T_sput_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput.d;
+
+public class T_sput_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/TestStubs.java
new file mode 100644
index 0000000..c6bbc0b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_boolean;
+
+public class TestStubs {
+    // used by testVFE9
+    static boolean TestStubField = false;
+    
+    // used by testE5
+    public static final boolean TestStubFieldFinal = false;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/Test_sput_boolean.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/Test_sput_boolean.java
new file mode 100644
index 0000000..f503ec6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/Test_sput_boolean.java
@@ -0,0 +1,319 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_boolean;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_10;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_11;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_12;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_13;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_14;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_15;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_17;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_7;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_8;
+import dot.junit.opcodes.sput_boolean.d.T_sput_boolean_9;
+
+
+public class Test_sput_boolean extends DxTestCase {
+
+    /**
+     * @title put boolean into static field
+     */
+    public void testN1() {
+        T_sput_boolean_1 t = new T_sput_boolean_1();
+        assertEquals(false, T_sput_boolean_1.st_i1);
+        t.run();
+        assertEquals(true, T_sput_boolean_1.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_boolean_12 t = new T_sput_boolean_12();
+        assertEquals(false, T_sput_boolean_12.st_i1);
+        t.run();
+        assertEquals(true, T_sput_boolean_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_14
+        T_sput_boolean_14 t = new T_sput_boolean_14();
+        assertEquals(false, T_sput_boolean_14.getProtectedField());
+        t.run();
+        assertEquals(true, T_sput_boolean_14.getProtectedField());
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_boolean_13 t = new T_sput_boolean_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title put boolean into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_boolean_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title put value '2' into boolean field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_boolean_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_boolean.TestStubs
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_8
+        try {
+            new T_sput_boolean_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_sput_boolean_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_sput_boolean_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_15
+        try {
+            new T_sput_boolean_15().run();
+            fail("expected a verification exception");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput_boolean shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput_boolean shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput_boolean shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput_boolean shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput_boolean shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput_boolean shall not work for byte fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_boolean.d.T_sput_boolean_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title Modification of final field in other class.
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_boolean.TestStubs
+        //@uses dot.junit.opcodes.sput_boolean.d.T_sput_boolean_11
+
+    	try {
+    		new T_sput_boolean_11().run();
+    		fail("expected IllegalAccessError");
+    	} catch (IllegalAccessError t) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.d
new file mode 100644
index 0000000..8078d65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_1.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1
+.super java/lang/Object
+
+.field public static st_i1 Z
+.field protected static st_p1 Z
+.field private static st_pvt1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()Z
+.limit regs 2
+
+       sget-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_pvt1 Z
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.java
new file mode 100644
index 0000000..3e28038
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_1 {
+    public static boolean st_i1;
+    protected static boolean st_p1;
+    private static boolean st_pvt1;
+    
+    public void run() {
+        st_i1 = true;
+    }
+    
+    public static boolean getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.d
new file mode 100644
index 0000000..672420d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_10.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_10
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_10.st_i1N Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.java
new file mode 100644
index 0000000..1bb1f7a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.d
new file mode 100644
index 0000000..796ac2a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_11.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.TestStubs.TestStubFieldFinal Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.java
new file mode 100644
index 0000000..a69a474
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.d
new file mode 100644
index 0000000..d6db6ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_12.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_12
+.super java/lang/Object
+
+.field public static final st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_12.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.java
new file mode 100644
index 0000000..8721911
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_12 {
+    public static boolean st_i1;
+    
+    public void run() {
+        st_i1 = true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.d
new file mode 100644
index 0000000..0f89bc2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_boolean.d.StubInitError
+.super java/lang/Object
+
+.field public static value Z
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.StubInitError.value Z
+       return-void
+.end method
+
+
+.source T_sput_boolean_13.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.StubInitError.value Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.java
new file mode 100644
index 0000000..20d2977
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_boolean.d;
+
+class StubInitError {
+    static boolean value = 5 / 0 > 0 ? true : false; 
+}
+
+public class T_sput_boolean_13 {
+    
+    public void run() {
+        StubInitError.value = true;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.d
new file mode 100644
index 0000000..cbaa0e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_14.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_14
+.super dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()Z
+.limit regs 2
+
+       sget-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_p1 Z
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_p1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.java
new file mode 100644
index 0000000..376f60f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_14 extends T_sput_boolean_1{
+    
+    public void run() {
+        T_sput_boolean_1.st_p1 = true;
+    }
+    
+    public static boolean getProtectedField(){
+        return T_sput_boolean_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.d
new file mode 100644
index 0000000..4adc0ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_15.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_15
+.super dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_boolean/d/T_sput_boolean_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_1.st_pvt1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.java
new file mode 100644
index 0000000..467fc55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.d
new file mode 100644
index 0000000..53dbe8f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_17.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_17.st_i1 Z
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.java
new file mode 100644
index 0000000..5e126b5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.d
new file mode 100644
index 0000000..080e547
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_18.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.d
new file mode 100644
index 0000000..f7922af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_19.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_19
+.super java/lang/Object
+
+.field public static st_f1 F
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 3.14
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_19.st_f1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.java
new file mode 100644
index 0000000..1cf93cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_19.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_19 {
+    public static float st_f1;
+    
+    
+    public void run() {
+        st_f1 = 3.14f;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.d
new file mode 100644
index 0000000..9e6fe7f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_2.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_2
+.super java/lang/Object
+
+.field public static st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_4.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.d
new file mode 100644
index 0000000..abc0227
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_20.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_20.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const v3, 0    
+       sput-boolean v3, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.d
new file mode 100644
index 0000000..b1e5f5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_21.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_21
+.super java/lang/Object
+
+.field public static st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.d
new file mode 100644
index 0000000..e13f364
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_22.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.d
new file mode 100644
index 0000000..9a5ae68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_23.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_23
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.d
new file mode 100644
index 0000000..3fe5b45
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_24.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_24
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_24.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.d
new file mode 100644
index 0000000..874c5f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_3.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3
+.super java/lang/Object
+
+.field public static st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-boolean v0, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dfh
new file mode 100644
index 0000000..db54511
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e7454821
+    21 48 45 E7 
+// parsed: offset 12, len 20: signature           : 6104...6e2c
+    61 04 5D 28 79 FC E7 CF 89 5A 03 2C 25 BC 80 A4 F5 A3 6E 2C 
+// parsed: offset 32, len 4: file_size           : 564
+    34 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 428 (0x0001ac)
+    AC 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 328
+    48 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 349 (0x00015d) "Ljava/lang/Object;"
+    5D 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 369 (0x000171) "T_sput_boolean_3.java"
+    71 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 392 (0x000188) "V"
+    88 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 395 (0x00018b) "Z"
+    8B 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 398 (0x00018e) "run"
+    8E 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 403 (0x000193) "st_i1"
+    93 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "Z"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  type_idx: 3 (0x000003) name_idx: 7 (0x000007) "st_i1"
+    00 00 03 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    00 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_sput_boolean_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 410 (0x00019a)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 9A 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_boolean.d.T_sput_boolean_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: sput-boolean v0, Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;.st_i1:Z // field@0000
+//@mod            6A 00 00 00 
+            6A 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 53: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+    33 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 62 6F 6F 6C 65 61 6E 2F 64 2F 54 5F 73 70 75 74 5F 62 6F 6F 6C 65 61 6E 5F 33 3B 00 
+// parsed: offset 349, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 369, len 23: TYPE_STRING_DATA_ITEM [3] "T_sput_boolean_3.java"
+    15 54 5F 73 70 75 74 5F 62 6F 6F 6C 65 61 6E 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 392, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 395, len 3: TYPE_STRING_DATA_ITEM [5] "Z"
+    01 5A 00 
+// parsed: offset 398, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 403, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_boolean/d/T_sput_boolean_3;"
+    // parsed: offset 410, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 411, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 412, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 413, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 414, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 415, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 417, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 420, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 422, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 423, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 424, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 426, len 2: PADDING
+    00 00 
+// map_list:
+    // parsed: offset 428, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 432, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 444, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 456, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 468, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 480, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 492, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 504, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 516, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 528, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 540, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 410 (0x00019a)
+        00 20 00 00 01 00 00 00 9A 01 00 00 
+    // parsed: offset 552, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 428 (0x0001ac)
+        00 10 00 00 01 00 00 00 AC 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.d
new file mode 100644
index 0000000..d0a7422
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_4.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_4
+.super java/lang/Object
+
+.field public static st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-boolean v3, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_4.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_6.d
new file mode 100644
index 0000000..d50c573
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_6.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_6
+.super java/lang/Object
+
+.field public static s Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 6
+
+       const v2, 2    
+       sput-boolean v2, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_6.s Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.d
new file mode 100644
index 0000000..c6b97f0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_7.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_7
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_7.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.java
new file mode 100644
index 0000000..7a97328
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.d
new file mode 100644
index 0000000..4b781da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_8.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.TestStubs.TestStubField Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.java
new file mode 100644
index 0000000..8d738ae1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.d
new file mode 100644
index 0000000..6deddd6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_boolean_9.java
+.class public dot.junit.opcodes.sput_boolean.d.T_sput_boolean_9
+.super java/lang/Object
+
+.field public st_i1 Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-boolean v1, dot.junit.opcodes.sput_boolean.d.T_sput_boolean_9noclass.st_i1 Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.java
new file mode 100644
index 0000000..6028d28
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_boolean/d/T_sput_boolean_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_boolean.d;
+
+public class T_sput_boolean_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/TestStubs.java
new file mode 100644
index 0000000..7b530ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_byte;
+
+public class TestStubs {
+    // used by testVFE9
+    static byte TestStubField = 1;
+    
+    // used by testE5
+    public static final byte TestStubFieldFinal = 1;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/Test_sput_byte.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/Test_sput_byte.java
new file mode 100644
index 0000000..c64f876
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/Test_sput_byte.java
@@ -0,0 +1,316 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_byte;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_1;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_10;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_11;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_12;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_13;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_14;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_15;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_17;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_7;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_8;
+import dot.junit.opcodes.sput_byte.d.T_sput_byte_9;
+
+public class Test_sput_byte extends DxTestCase {
+    /**
+     * @title put byte into static field
+     */
+    public void testN1() {
+        T_sput_byte_1 t = new T_sput_byte_1();
+        assertEquals(0, T_sput_byte_1.st_i1);
+        t.run();
+        assertEquals(77, T_sput_byte_1.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_byte_12 t = new T_sput_byte_12();
+        assertEquals(0, T_sput_byte_12.st_i1);
+        t.run();
+        assertEquals(77, T_sput_byte_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_1
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_14
+        T_sput_byte_14 t = new T_sput_byte_14();
+        assertEquals(0, T_sput_byte_14.getProtectedField());
+        t.run();
+        assertEquals(77, T_sput_byte_14.getProtectedField());
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_byte_13 t = new T_sput_byte_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title put byte into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_byte_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title put value '256' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_byte_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_byte.TestStubs
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_8
+        try {
+            new T_sput_byte_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_sput_byte_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_sput_byte_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_1
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_15
+        try {
+            new T_sput_byte_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput-byte shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-byte shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-byte shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-byte shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-byte shall not work for char fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1
+     * @title sput-byte shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_byte.d.T_sput_byte_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_byte.TestStubs
+        //@uses dot.junit.opcodes.sput_byte.d.T_sput_byte_11
+    	try {
+            new T_sput_byte_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.d
new file mode 100644
index 0000000..ec9b61c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_1.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_1
+.super java/lang/Object
+
+.field public static st_i1 B
+.field protected static st_p1 B
+.field private static st_pvt1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()B
+.limit regs 2
+
+       sget-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_pvt1 B
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.java
new file mode 100644
index 0000000..56c52c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_1 {
+    public static byte st_i1;
+    protected static byte st_p1;
+    private static byte st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public static byte getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.d
new file mode 100644
index 0000000..f0a420c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_10.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_10
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_10.st_i1N B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.java
new file mode 100644
index 0000000..0b49e2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.d
new file mode 100644
index 0000000..7a3faff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_11.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.TestStubs.TestStubFieldFinal B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.java
new file mode 100644
index 0000000..1cf3e6c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.d
new file mode 100644
index 0000000..41e2aff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_12.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_12
+.super java/lang/Object
+
+.field public static final st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_12.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.java
new file mode 100644
index 0000000..4e438a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_12 {
+    public static byte st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.d
new file mode 100644
index 0000000..2271ca2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_byte.d.StubInitError
+.super java/lang/Object
+
+.field public static value B
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.StubInitError.value B
+       return-void
+.end method
+
+
+.source T_sput_byte_13.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.StubInitError.value B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.java
new file mode 100644
index 0000000..5270328
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_byte.d;
+
+class StubInitError {
+    static byte value = (byte)(5 / 0); 
+}
+
+public class T_sput_byte_13 {
+    
+    public void run() {
+        StubInitError.value = 11;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.d
new file mode 100644
index 0000000..1b216a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_14.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_14
+.super dot/junit/opcodes/sput_byte/d/T_sput_byte_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_byte/d/T_sput_byte_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()B
+.limit regs 2
+
+       sget-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_p1 B
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_p1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.java
new file mode 100644
index 0000000..67075e71
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_14 extends T_sput_byte_1{
+    
+    public void run() {
+        T_sput_byte_1.st_p1 = 77;
+    }
+    
+    public static byte getProtectedField(){
+        return T_sput_byte_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.d
new file mode 100644
index 0000000..8fd5828
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_15.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_15
+.super dot/junit/opcodes/sput_byte/d/T_sput_byte_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_byte/d/T_sput_byte_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_1.st_pvt1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.java
new file mode 100644
index 0000000..c797268
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.d
new file mode 100644
index 0000000..76bd507
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_17.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_17.st_i1 B
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.java
new file mode 100644
index 0000000..4ee32fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.d
new file mode 100644
index 0000000..159ef4d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_18.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.d
new file mode 100644
index 0000000..c9520be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_2.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_2
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_4.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.d
new file mode 100644
index 0000000..9a77ec6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_20.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-byte v3, dot.junit.opcodes.sput_byte.d.T_sput_byte_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d
new file mode 100644
index 0000000..15a924b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_21.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_21
+.super java/lang/Object
+
+.field public static st_s I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_21.st_s I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d
new file mode 100644
index 0000000..3501490
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_22.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_22
+.super java/lang/Object
+
+.field public static st_b I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_22.st_b I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.d
new file mode 100644
index 0000000..a34f665
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_23.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_23
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_23.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.d
new file mode 100644
index 0000000..07265af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_24.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.d
new file mode 100644
index 0000000..128d14b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_3.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_3
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_3.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dfh
new file mode 100644
index 0000000..86678ff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_byte/d/T_sput_byte_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : e05a4586
+    86 45 5A E0 
+// parsed: offset 12, len 20: signature           : 90cf...df87
+    90 CF A4 6E C3 FD 39 4D 4D 5C E0 CB 09 2E 87 21 CC F6 DF 87 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "B"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 346 (0x00015a) "Ljava/lang/Object;"
+    5A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 366 (0x00016e) "T_sput_byte_3.java"
+    6E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 386 (0x000182) "V"
+    82 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "run"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 394 (0x00018a) "st_i1"
+    8A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "B"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_byte_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 401 (0x000191)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 91 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_byte.d.T_sput_byte_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_byte.d.T_sput_byte_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: sput-byte v0, Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;.st_i1:B // field@0000
+//@mod            6B 00 00 00 
+            6B 00 00 01
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "B"
+    01 42 00 
+// parsed: offset 299, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 62 79 74 65 2F 64 2F 54 5F 73 70 75 74 5F 62 79 74 65 5F 33 3B 00 
+// parsed: offset 346, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [4] "T_sput_byte_3.java"
+    12 54 5F 73 70 75 74 5F 62 79 74 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 386, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 389, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 394, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_byte/d/T_sput_byte_3;"
+    // parsed: offset 401, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 402, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 403, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 404, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 405, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 406, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 408, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 411, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 413, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 415, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 417, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 401 (0x000191)
+        00 20 00 00 01 00 00 00 91 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.d
new file mode 100644
index 0000000..fc64b62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_4.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_4
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-byte v3, dot.junit.opcodes.sput_byte.d.T_sput_byte_4.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_6.d
new file mode 100644
index 0000000..f41929a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_6.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_6
+.super java/lang/Object
+
+.field public static st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 256
+       sput-byte v0, dot.junit.opcodes.sput_byte.d.T_sput_byte_6.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.d
new file mode 100644
index 0000000..8e90c22
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_7.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_7
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_7.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.java
new file mode 100644
index 0000000..8871136
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.d
new file mode 100644
index 0000000..f4a000f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_8.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-byte v1, dot.junit.opcodes.sput_byte.TestStubs.TestStubField B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.java
new file mode 100644
index 0000000..0e1605f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.d
new file mode 100644
index 0000000..59ecb38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_byte_9.java
+.class public dot.junit.opcodes.sput_byte.d.T_sput_byte_9
+.super java/lang/Object
+
+.field public st_i1 B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-byte v1, dot.junit.opcodes.sput_byte.d.T_sput_byte_9noclass.st_i1 B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.java
new file mode 100644
index 0000000..0262d88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_byte/d/T_sput_byte_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_byte.d;
+
+public class T_sput_byte_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/TestStubs.java
new file mode 100644
index 0000000..fb91f68
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_char;
+
+public class TestStubs {
+    // used by testVFE9
+    static char TestStubField = 1;
+    
+    // used by testE5
+    public static final char TestStubFieldFinal = 1;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/Test_sput_char.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/Test_sput_char.java
new file mode 100644
index 0000000..120b45a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/Test_sput_char.java
@@ -0,0 +1,316 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_char;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_char.d.T_sput_char_1;
+import dot.junit.opcodes.sput_char.d.T_sput_char_10;
+import dot.junit.opcodes.sput_char.d.T_sput_char_11;
+import dot.junit.opcodes.sput_char.d.T_sput_char_12;
+import dot.junit.opcodes.sput_char.d.T_sput_char_13;
+import dot.junit.opcodes.sput_char.d.T_sput_char_14;
+import dot.junit.opcodes.sput_char.d.T_sput_char_15;
+import dot.junit.opcodes.sput_char.d.T_sput_char_17;
+import dot.junit.opcodes.sput_char.d.T_sput_char_7;
+import dot.junit.opcodes.sput_char.d.T_sput_char_8;
+import dot.junit.opcodes.sput_char.d.T_sput_char_9;
+
+public class Test_sput_char extends DxTestCase {
+    /**
+     * @title put char into static field
+     */
+    public void testN1() {
+        T_sput_char_1 t = new T_sput_char_1();
+        assertEquals(0, T_sput_char_1.st_i1);
+        t.run();
+        assertEquals(77, T_sput_char_1.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_char_12 t = new T_sput_char_12();
+        assertEquals(0, T_sput_char_12.st_i1);
+        t.run();
+        assertEquals(77, T_sput_char_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_1
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_14
+        T_sput_char_14 t = new T_sput_char_14();
+        assertEquals(0, T_sput_char_14.getProtectedField());
+        t.run();
+        assertEquals(77, T_sput_char_14.getProtectedField());
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_char_13 t = new T_sput_char_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title put char into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_char_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title put value '66000' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_char_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_char.TestStubs
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_8
+        try {
+            new T_sput_char_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_sput_char_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_sput_char_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_1
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_15
+        try {
+            new T_sput_char_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput-char shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-char shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-char shall not work for short fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-char shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-char shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-char shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_char.d.T_sput_char_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_char.TestStubs
+        //@uses dot.junit.opcodes.sput_char.d.T_sput_char_11
+    	try {
+            new T_sput_char_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.d
new file mode 100644
index 0000000..8603349
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_1.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_1
+.super java/lang/Object
+
+.field public static st_i1 C
+.field protected static st_p1 C
+.field private static st_pvt1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()C
+.limit regs 2
+
+       sget-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_pvt1 C
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.java
new file mode 100644
index 0000000..0437a31
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_1 {
+    public static char st_i1;
+    protected static char st_p1;
+    private static char st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public static char getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.d
new file mode 100644
index 0000000..ff47c26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_10.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_10
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_10.st_i1N C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.java
new file mode 100644
index 0000000..10f88f3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.d
new file mode 100644
index 0000000..6e23f44
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_11.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.TestStubs.TestStubFieldFinal C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.java
new file mode 100644
index 0000000..600cc9d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.d
new file mode 100644
index 0000000..8cb984f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_12.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_12
+.super java/lang/Object
+
+.field public static final st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_12.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.java
new file mode 100644
index 0000000..cd1f810
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_12 {
+    public static char st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.d
new file mode 100644
index 0000000..5b97bc4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_char.d.StubInitError
+.super java/lang/Object
+
+.field public static value C
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-char v1, dot.junit.opcodes.sput_char.d.StubInitError.value C
+       return-void
+.end method
+
+
+.source T_sput_char_13.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.StubInitError.value C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.java
new file mode 100644
index 0000000..786f121
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_char.d;
+
+class StubInitError {
+    static char value = (char)(5 / 0); 
+}
+
+public class T_sput_char_13 {
+    
+    public void run() {
+        StubInitError.value = 11;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.d
new file mode 100644
index 0000000..f682166
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_14.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_14
+.super dot/junit/opcodes/sput_char/d/T_sput_char_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_char/d/T_sput_char_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()C
+.limit regs 2
+
+       sget-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_p1 C
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_p1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.java
new file mode 100644
index 0000000..409b51c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_14 extends T_sput_char_1{
+    
+    public void run() {
+        T_sput_char_1.st_p1 = 77;
+    }
+    
+    public static char getProtectedField(){
+        return T_sput_char_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.d
new file mode 100644
index 0000000..cccb96b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_15.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_15
+.super dot/junit/opcodes/sput_char/d/T_sput_char_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_char/d/T_sput_char_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_1.st_pvt1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.java
new file mode 100644
index 0000000..2b4d7d2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.d
new file mode 100644
index 0000000..22af6be
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_17.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_17.st_i1 C
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.java
new file mode 100644
index 0000000..349eaa2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.d
new file mode 100644
index 0000000..f1fbeb6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_18.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.d
new file mode 100644
index 0000000..aa5f7d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_2.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_2
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_4.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.d
new file mode 100644
index 0000000..92d2e6e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_20.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-char v3, dot.junit.opcodes.sput_char.d.T_sput_char_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.d
new file mode 100644
index 0000000..bdf6fe3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_21.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_21
+.super java/lang/Object
+
+.field public static st_s S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_21.st_s S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.d
new file mode 100644
index 0000000..fa16663
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_22.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.d
new file mode 100644
index 0000000..fd69e4f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_23.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_23
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.d
new file mode 100644
index 0000000..8862e51
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_24.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.d
new file mode 100644
index 0000000..ff1725f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_3.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_3
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_3.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.dfh
new file mode 100644
index 0000000..45f6af2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_char/d/T_sput_char_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_char/d/T_sput_char_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : bc0b43dc
+    DC 43 0B BC 
+// parsed: offset 12, len 20: signature           : ade8...22aa
+    AD E8 8C 2F 92 1D 57 2F 31 A9 89 DE D2 D7 EF 3B 36 0D 22 AA 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "C"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 299 (0x00012b) "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+    2B 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 346 (0x00015a) "Ljava/lang/Object;"
+    5A 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 366 (0x00016e) "T_sput_char_3.java"
+    6E 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 386 (0x000182) "V"
+    82 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 389 (0x000185) "run"
+    85 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 394 (0x00018a) "st_i1"
+    8A 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "C"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_char_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 401 (0x000191)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 91 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_char.d.T_sput_char_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_char.d.T_sput_char_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: sput-char v0, Ldot/junit/opcodes/sput_char/d/T_sput_char_3;.st_i1:C // field@0000
+//@mod            6C 00 00 00 
+            6C 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 3: TYPE_STRING_DATA_ITEM [1] "C"
+    01 43 00 
+// parsed: offset 299, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 63 68 61 72 2F 64 2F 54 5F 73 70 75 74 5F 63 68 61 72 5F 33 3B 00 
+// parsed: offset 346, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 366, len 20: TYPE_STRING_DATA_ITEM [4] "T_sput_char_3.java"
+    12 54 5F 73 70 75 74 5F 63 68 61 72 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 386, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 389, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 394, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_char/d/T_sput_char_3;"
+    // parsed: offset 401, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 402, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 403, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 404, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 405, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 406, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 407, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 408, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 411, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 413, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 414, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 415, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 417, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 401 (0x000191)
+        00 20 00 00 01 00 00 00 91 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.d
new file mode 100644
index 0000000..95cf09b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_4.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_4
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-char v3, dot.junit.opcodes.sput_char.d.T_sput_char_4.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_6.d
new file mode 100644
index 0000000..a2e504a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_6.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_6
+.super java/lang/Object
+
+.field public static st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 66000
+       sput-char v0, dot.junit.opcodes.sput_char.d.T_sput_char_6.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.d
new file mode 100644
index 0000000..8c44574
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_7.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_7
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_7.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.java
new file mode 100644
index 0000000..7a496f2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.d
new file mode 100644
index 0000000..ac15f64
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_8.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-char v1, dot.junit.opcodes.sput_char.TestStubs.TestStubField C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.java
new file mode 100644
index 0000000..c4a3e38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.d
new file mode 100644
index 0000000..74279c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_char_9.java
+.class public dot.junit.opcodes.sput_char.d.T_sput_char_9
+.super java/lang/Object
+
+.field public st_i1 C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-char v1, dot.junit.opcodes.sput_char.d.T_sput_char_9noclass.st_i1 C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.java
new file mode 100644
index 0000000..c38e18c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_char/d/T_sput_char_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_char.d;
+
+public class T_sput_char_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/TestStubs.java
new file mode 100644
index 0000000..701ece3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_object;
+
+public class TestStubs {
+    // used by testVFE9
+    static Object TestStubField = null;
+    
+    // used by testE5
+    public static final Object TestStubFieldFinal = null;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/Test_sput_object.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/Test_sput_object.java
new file mode 100644
index 0000000..cd070a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/Test_sput_object.java
@@ -0,0 +1,318 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_object;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_object.d.T_sput_object_1;
+import dot.junit.opcodes.sput_object.d.T_sput_object_10;
+import dot.junit.opcodes.sput_object.d.T_sput_object_11;
+import dot.junit.opcodes.sput_object.d.T_sput_object_12;
+import dot.junit.opcodes.sput_object.d.T_sput_object_13;
+import dot.junit.opcodes.sput_object.d.T_sput_object_14;
+import dot.junit.opcodes.sput_object.d.T_sput_object_15;
+import dot.junit.opcodes.sput_object.d.T_sput_object_17;
+import dot.junit.opcodes.sput_object.d.T_sput_object_7;
+import dot.junit.opcodes.sput_object.d.T_sput_object_8;
+import dot.junit.opcodes.sput_object.d.T_sput_object_9;
+
+public class Test_sput_object extends DxTestCase {
+    /**
+     * @title put reference into static field
+     */
+    public void testN1() {
+        T_sput_object_1 t = new T_sput_object_1();
+        assertEquals(null, T_sput_object_1.st_i1);
+        t.run();
+        assertEquals(t, T_sput_object_1.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_object_12 t = new T_sput_object_12();
+        assertEquals(null, T_sput_object_12.st_i1);
+        t.run();
+        assertEquals(t, T_sput_object_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_1
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_14
+        T_sput_object_14 t = new T_sput_object_14();
+        assertEquals(null, T_sput_object_14.getProtectedField());
+        t.run();
+        assertEquals(t, T_sput_object_14.getProtectedField());
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_object_13 t = new T_sput_object_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title put object into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_object_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_object_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_object.TestStubs
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_8
+        try {
+            new T_sput_object_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_sput_object_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_sput_object_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_1
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_15
+        try {
+            new T_sput_object_15().run();
+            fail("expected a verification exception");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput-object shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title assignment incompatible references
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-object shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-object shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-object shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-object shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-object shall not work for short fields
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_object.d.T_sput_object_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_object.TestStubs
+        //@uses dot.junit.opcodes.sput_object.d.T_sput_object_11
+    	try {
+            new T_sput_object_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.d
new file mode 100644
index 0000000..acb4903
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.d
@@ -0,0 +1,45 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_1.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_1
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+.field protected static st_p1 Ljava/lang/Object;
+.field private static st_pvt1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()Ljava/lang/Object;
+.limit regs 2
+
+       sget-object v0, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_pvt1 Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_i1 Ljava/lang/Object;
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.java
new file mode 100644
index 0000000..1bf8e5c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_1 {
+    public static Object st_i1;
+    protected static Object st_p1;
+    private static Object st_pvt1;
+    
+    public void run() {
+        st_i1 = this;
+    }
+    
+    public static Object getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.d
new file mode 100644
index 0000000..7f12b99
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_10.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_10
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_10.st_i1N Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.java
new file mode 100644
index 0000000..bbc15c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.d
new file mode 100644
index 0000000..a09c4af
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_11.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.TestStubs.TestStubFieldFinal Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.java
new file mode 100644
index 0000000..7f90df0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.d
new file mode 100644
index 0000000..562d8edb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_12.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_12
+.super java/lang/Object
+
+.field public static final st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_12.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.java
new file mode 100644
index 0000000..5a592c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_12 {
+    public static Object st_i1;
+    
+    public void run() {
+        st_i1 = this;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.d
new file mode 100644
index 0000000..d2d59da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_object.d.StubInitError
+.super java/lang/Object
+
+.field public static t I
+.field public static value Ljava/lang/Object;
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput v1, dot.junit.opcodes.sput_object.d.StubInitError.t I
+       return-void
+.end method
+
+
+.source T_sput_object_13.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.StubInitError.value Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.java
new file mode 100644
index 0000000..9e16873
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_13.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_object.d;
+
+class StubInitError {
+    static short t = (short)(5 / 0);
+    static Object value;
+}
+
+public class T_sput_object_13 {
+    
+    public void run() {
+        StubInitError.value = this;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.d
new file mode 100644
index 0000000..89ed274
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.d
@@ -0,0 +1,41 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_14.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_14
+.super dot/junit/opcodes/sput_object/d/T_sput_object_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_object/d/T_sput_object_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()Ljava/lang/Object;
+.limit regs 2
+
+       sget-object v0, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_p1 Ljava/lang/Object;
+       return-object v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_p1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.java
new file mode 100644
index 0000000..87ea8fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_14 extends T_sput_object_1{
+    
+    public void run() {
+        T_sput_object_1.st_p1 = this;
+    }
+    
+    public static Object getProtectedField(){
+        return T_sput_object_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.d
new file mode 100644
index 0000000..61d48e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_15.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_15
+.super dot/junit/opcodes/sput_object/d/T_sput_object_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_object/d/T_sput_object_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_1.st_pvt1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.java
new file mode 100644
index 0000000..676e4c3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.d
new file mode 100644
index 0000000..b46acdf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_17.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_17.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.java
new file mode 100644
index 0000000..6f7ad7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.d
new file mode 100644
index 0000000..21c4c5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_18.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_18.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.d
new file mode 100644
index 0000000..5b6c088
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_2.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_2
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1234    
+       sput-object v0, dot.junit.opcodes.sput_object.d.T_sput_object_2.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.d
new file mode 100644
index 0000000..8d6c9df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_20.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/String;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_20.st_o Ljava/lang/String;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.d
new file mode 100644
index 0000000..f09c1a9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_21.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_21
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.d
new file mode 100644
index 0000000..4ae60e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_22.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.d
new file mode 100644
index 0000000..b440bb4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_23.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_23
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.d
new file mode 100644
index 0000000..63a01e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_24.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.d
new file mode 100644
index 0000000..080efbc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_3.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_3
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+        sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_3.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.dfh
new file mode 100644
index 0000000..90b5887
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_3.dfh
@@ -0,0 +1,253 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_object/d/T_sput_object_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_object/d/T_sput_object_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : c2134499
+    99 44 13 C2 
+// parsed: offset 12, len 20: signature           : ef04...607d
+    EF 04 C2 97 17 79 3D 72 CF 34 E1 02 0C 5F 88 73 55 DF 60 7D 
+// parsed: offset 32, len 4: file_size           : 544
+    20 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 408 (0x000198)
+    98 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 7
+    07 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 140 (0x00008c)
+    8C 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 152 (0x000098)
+    98 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 164 (0x0000a4)
+    A4 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 196 (0x0000c4)
+    C4 00 00 00 
+// parsed: offset 104, len 4: data_size           : 316
+    3C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 228 (0x0000e4)
+    E4 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 276 (0x000114) "<init>"
+    14 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 284 (0x00011c) "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+    1C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 335 (0x00014f) "Ljava/lang/Object;"
+    4F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 355 (0x000163) "T_sput_object_3.java"
+    63 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 377 (0x000179) "V"
+    79 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 380 (0x00017c) "run"
+    7C 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 385 (0x000181) "st_i1"
+    81 01 00 00 
+
+// type_ids:
+// parsed: offset 140, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+    01 00 00 00 
+// parsed: offset 144, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 148, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 152, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 164, len 8: [0] class_idx: 0 (0x000000)  type_idx: 1 (0x000001) name_idx: 6 (0x000006) "st_i1"
+    00 00 01 00 06 00 00 00 
+
+// methods_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 180, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 188, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 196, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_sput_object_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 392 (0x000188)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 88 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_object.d.T_sput_object_3.<init>"
+    // parsed: offset 228, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 230, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 232, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 234, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 236, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 240, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 244, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 250, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_object.d.T_sput_object_3.run"
+    // parsed: offset 252, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 254, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 256, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 258, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 260, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 264, len 4: insns_size: 3
+        03 00 00 00 
+    // insns:
+        // parsed: offset 268, len 4: |0000: sput-object v2, Ldot/junit/opcodes/sput_object/d/T_sput_object_3;.st_i1:Ljava/lang/Object; // field@0000
+//@mod            69 02 00 00 
+            69 02 00 01 
+        // parsed: offset 272, len 2: |0002: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 274, len 2: PADDING
+    00 00 
+// parsed: offset 276, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 284, len 51: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+    31 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 6F 62 6A 65 63 74 2F 64 2F 54 5F 73 70 75 74 5F 6F 62 6A 65 63 74 5F 33 3B 00 
+// parsed: offset 335, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 355, len 22: TYPE_STRING_DATA_ITEM [3] "T_sput_object_3.java"
+    14 54 5F 73 70 75 74 5F 6F 62 6A 65 63 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 377, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 380, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// parsed: offset 385, len 7: TYPE_STRING_DATA_ITEM [6] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_object/d/T_sput_object_3;"
+    // parsed: offset 392, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 393, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 394, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 395, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 396, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 397, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 398, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 399, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 402, len 2: code_off: 228 (0x0000e4)
+                E4 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 404, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 405, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 406, len 2: code_off: 252 (0x0000fc)
+                FC 01 
+// map_list:
+    // parsed: offset 408, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 412, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 424, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 7
+    //      offset: 112 (0x000070)
+        01 00 00 00 07 00 00 00 70 00 00 00 
+    // parsed: offset 436, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 140 (0x00008c)
+        02 00 00 00 03 00 00 00 8C 00 00 00 
+    // parsed: offset 448, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 152 (0x000098)
+        03 00 00 00 01 00 00 00 98 00 00 00 
+    // parsed: offset 460, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 164 (0x0000a4)
+        04 00 00 00 01 00 00 00 A4 00 00 00 
+    // parsed: offset 472, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 172 (0x0000ac)
+        05 00 00 00 03 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 196 (0x0000c4)
+        06 00 00 00 01 00 00 00 C4 00 00 00 
+    // parsed: offset 496, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 228 (0x0000e4)
+        01 20 00 00 02 00 00 00 E4 00 00 00 
+    // parsed: offset 508, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 7
+    //      offset: 276 (0x000114)
+        02 20 00 00 07 00 00 00 14 01 00 00 
+    // parsed: offset 520, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 392 (0x000188)
+        00 20 00 00 01 00 00 00 88 01 00 00 
+    // parsed: offset 532, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 408 (0x000198)
+        00 10 00 00 01 00 00 00 98 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.d
new file mode 100644
index 0000000..3a3bccd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_4.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_4
+.super java/lang/Object
+
+.field public static st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_4.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.d
new file mode 100644
index 0000000..b43597a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_6.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_6.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_6
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v3, dot.junit.opcodes.sput_object.d.T_sput_object_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.d
new file mode 100644
index 0000000..84988f9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_7.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_7
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_7.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.java
new file mode 100644
index 0000000..0e5f873
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.d
new file mode 100644
index 0000000..26495a1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_8.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.TestStubs.TestStubField Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.java
new file mode 100644
index 0000000..d3d7408
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.d
new file mode 100644
index 0000000..2d35cf1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_object_9.java
+.class public dot.junit.opcodes.sput_object.d.T_sput_object_9
+.super java/lang/Object
+
+.field public st_i1 Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-object v2, dot.junit.opcodes.sput_object.d.T_sput_object_9noclass.st_i1 Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.java
new file mode 100644
index 0000000..bef9d16
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_object/d/T_sput_object_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_object.d;
+
+public class T_sput_object_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/TestStubs.java
new file mode 100644
index 0000000..dd67611
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_short;
+
+public class TestStubs {
+    // used by testVFE9
+    static short TestStubField = 1;
+    
+    // used by testE5
+    public static final short TestStubFieldFinal = 1;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/Test_sput_short.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/Test_sput_short.java
new file mode 100644
index 0000000..f14c4a7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/Test_sput_short.java
@@ -0,0 +1,316 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_short;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_short.d.T_sput_short_1;
+import dot.junit.opcodes.sput_short.d.T_sput_short_10;
+import dot.junit.opcodes.sput_short.d.T_sput_short_11;
+import dot.junit.opcodes.sput_short.d.T_sput_short_12;
+import dot.junit.opcodes.sput_short.d.T_sput_short_13;
+import dot.junit.opcodes.sput_short.d.T_sput_short_14;
+import dot.junit.opcodes.sput_short.d.T_sput_short_15;
+import dot.junit.opcodes.sput_short.d.T_sput_short_17;
+import dot.junit.opcodes.sput_short.d.T_sput_short_7;
+import dot.junit.opcodes.sput_short.d.T_sput_short_8;
+import dot.junit.opcodes.sput_short.d.T_sput_short_9;
+
+public class Test_sput_short extends DxTestCase {
+    /**
+     * @title put short into static field
+     */
+    public void testN1() {
+        T_sput_short_1 t = new T_sput_short_1();
+        assertEquals(0, T_sput_short_1.st_i1);
+        t.run();
+        assertEquals(77, T_sput_short_1.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN2() {
+        T_sput_short_12 t = new T_sput_short_12();
+        assertEquals(0, T_sput_short_12.st_i1);
+        t.run();
+        assertEquals(77, T_sput_short_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_1
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_14
+        T_sput_short_14 t = new T_sput_short_14();
+        assertEquals(0, T_sput_short_14.getProtectedField());
+        t.run();
+        assertEquals(77, T_sput_short_14.getProtectedField());
+    }
+
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_short_13 t = new T_sput_short_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title put short into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_short_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title put value '66000' into byte field
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify double
+     * field with single-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_short_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_short.TestStubs
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_8
+        try {
+            new T_sput_short_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class.
+     */
+    public void testVFE10() {
+        try {
+            new T_sput_short_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field.
+     */
+    public void testVFE11() {
+        try {
+            new T_sput_short_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_1
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_15
+        try {
+            new T_sput_short_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput-short shall not work for wide numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-short shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-short shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-short shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-short shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-short shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_short.d.T_sput_short_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_short.TestStubs
+        //@uses dot.junit.opcodes.sput_short.d.T_sput_short_11
+    	try {
+            new T_sput_short_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.d
new file mode 100644
index 0000000..f41be35
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_1.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_1
+.super java/lang/Object
+
+.field public static st_i1 S
+.field protected static st_p1 S
+.field private static st_pvt1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()S
+.limit regs 2
+
+       sget-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_pvt1 S
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.java
new file mode 100644
index 0000000..c2d792d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_1 {
+    public static short st_i1;
+    protected static short st_p1;
+    private static short st_pvt1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+    
+    public static short getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.d
new file mode 100644
index 0000000..10a12b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_10.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_10
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_10.st_i1N S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.java
new file mode 100644
index 0000000..3af3f04
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.d
new file mode 100644
index 0000000..4351376
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_11.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.TestStubs.TestStubFieldFinal S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.java
new file mode 100644
index 0000000..15f6124
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.d
new file mode 100644
index 0000000..a9dbbb0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_12.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_12
+.super java/lang/Object
+
+.field public static final st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_12.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.java
new file mode 100644
index 0000000..f6edd67
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_12 {
+    public static short st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.d
new file mode 100644
index 0000000..55d0bf5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source StubInitError.java
+.class public dot.junit.opcodes.sput_short.d.StubInitError
+.super java/lang/Object
+
+.field public static value S
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-short v1, dot.junit.opcodes.sput_short.d.StubInitError.value S
+       return-void
+.end method
+
+
+.source T_sput_short_13.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.StubInitError.value S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.java
new file mode 100644
index 0000000..3750c17
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_short.d;
+
+class StubInitError {
+    static short value = (short)(5 / 0); 
+}
+
+public class T_sput_short_13 {
+    
+    public void run() {
+        StubInitError.value = 11;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.d
new file mode 100644
index 0000000..a836771
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_14.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_14
+.super dot/junit/opcodes/sput_short/d/T_sput_short_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_short/d/T_sput_short_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()S
+.limit regs 2
+
+       sget-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_p1 S
+       return v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 77
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_p1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.java
new file mode 100644
index 0000000..2aa5061
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_14 extends T_sput_short_1{
+    
+    public void run() {
+        T_sput_short_1.st_p1 = 77;
+    }
+    
+    public static short getProtectedField(){
+        return T_sput_short_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.d
new file mode 100644
index 0000000..4848a3f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_15.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_15
+.super dot/junit/opcodes/sput_short/d/T_sput_short_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_short/d/T_sput_short_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const/16 v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_1.st_pvt1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.java
new file mode 100644
index 0000000..04f6a7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.d
new file mode 100644
index 0000000..3aba6fb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_17.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_17
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_17.st_i1 S
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.java
new file mode 100644
index 0000000..fa56416
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.d
new file mode 100644
index 0000000..e1ef12c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_18.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_18
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_18.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.d
new file mode 100644
index 0000000..f6c1a55
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_2.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_2
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_4.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.d
new file mode 100644
index 0000000..dc42d54
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_20.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-short v3, dot.junit.opcodes.sput_short.d.T_sput_short_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.d
new file mode 100644
index 0000000..a55af0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_21.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_21
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 12    
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.d
new file mode 100644
index 0000000..25375e2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_22.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.d
new file mode 100644
index 0000000..fc437cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_23.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_23
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.d
new file mode 100644
index 0000000..16b16f1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_24.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const v0, 1    
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.d
new file mode 100644
index 0000000..1246f9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_3.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_3
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_3.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.dfh
new file mode 100644
index 0000000..ac6f1b7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_3.dfh
@@ -0,0 +1,259 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_short/d/T_sput_short_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_short/d/T_sput_short_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 6a84455e
+    5E 45 84 6A 
+// parsed: offset 12, len 20: signature           : 2f3c...2c3e
+    2F 3C 42 F3 69 37 32 D5 2E D5 95 0C 52 19 F8 FB EA 75 2C 3E 
+// parsed: offset 32, len 4: file_size           : 556
+    2C 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 420 (0x0001a4)
+    A4 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 320
+    40 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 288 (0x000120) "<init>"
+    20 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 296 (0x000128) "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+    28 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 345 (0x000159) "Ljava/lang/Object;"
+    59 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 365 (0x00016d) "S"
+    6D 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 368 (0x000170) "T_sput_short_3.java"
+    70 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 389 (0x000185) "V"
+    85 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 392 (0x000188) "run"
+    88 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 397 (0x00018d) "st_i1"
+    8D 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "S"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 0 (0x000000)  type_idx: 2 (0x000002) name_idx: 7 (0x000007) "st_i1"
+    00 00 02 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    00 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_short_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 404 (0x000194)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 94 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_short.d.T_sput_short_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_short.d.T_sput_short_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 6
+        06 00 00 00 
+    // insns:
+        // parsed: offset 276, len 6: |0000: const v0, #float 0.000000 // #0x00000001 int
+            14 00 01 00 00 00 
+        // parsed: offset 282, len 4: |0003: sput-short v0, Ldot/junit/opcodes/sput_short/d/T_sput_short_3;.st_i1:S // field@0000
+//@mod            6D 00 00 00 
+            6D 00 00 01 
+        // parsed: offset 286, len 2: |0005: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 288, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 296, len 49: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+    2F 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 73 68 6F 72 74 2F 64 2F 54 5F 73 70 75 74 5F 73 68 6F 72 74 5F 33 3B 00 
+// parsed: offset 345, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 365, len 3: TYPE_STRING_DATA_ITEM [3] "S"
+    01 53 00 
+// parsed: offset 368, len 21: TYPE_STRING_DATA_ITEM [4] "T_sput_short_3.java"
+    13 54 5F 73 70 75 74 5F 73 68 6F 72 74 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 389, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 392, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 397, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_short/d/T_sput_short_3;"
+    // parsed: offset 404, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 405, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 406, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 407, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 408, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 409, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 410, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 411, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 414, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 416, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 417, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 418, len 2: code_off: 260 (0x000104)
+                84 02 
+// map_list:
+    // parsed: offset 420, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 424, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 436, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 448, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 460, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 472, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 484, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 496, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 508, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 520, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 288 (0x000120)
+        02 20 00 00 08 00 00 00 20 01 00 00 
+    // parsed: offset 532, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 404 (0x000194)
+        00 20 00 00 01 00 00 00 94 01 00 00 
+    // parsed: offset 544, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 420 (0x0001a4)
+        00 10 00 00 01 00 00 00 A4 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.d
new file mode 100644
index 0000000..df600da
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_4.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_4
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-short v3, dot.junit.opcodes.sput_short.d.T_sput_short_4.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_6.d
new file mode 100644
index 0000000..1b3904f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_6.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_6
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 66000
+       sput-short v0, dot.junit.opcodes.sput_short.d.T_sput_short_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.d
new file mode 100644
index 0000000..99d2bc6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_7.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_7
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_7.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.java
new file mode 100644
index 0000000..cbecc44
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.d
new file mode 100644
index 0000000..ce24cf8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_8.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-short v1, dot.junit.opcodes.sput_short.TestStubs.TestStubField S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.java
new file mode 100644
index 0000000..852263e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.d
new file mode 100644
index 0000000..d5aa82f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_short_9.java
+.class public dot.junit.opcodes.sput_short.d.T_sput_short_9
+.super java/lang/Object
+
+.field public st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 0
+       sput-short v1, dot.junit.opcodes.sput_short.d.T_sput_short_9noclass.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.java
new file mode 100644
index 0000000..e950c1d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_short/d/T_sput_short_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_short.d;
+
+public class T_sput_short_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/TestStubs.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/TestStubs.java
new file mode 100644
index 0000000..bc99fda
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/TestStubs.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_wide;
+
+public class TestStubs {
+    // used by testVFE9
+    static long TestStubField = 1;
+    
+    // used by testE5
+    public static final long TestStubFieldFinal = 1;
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/Test_sput_wide.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/Test_sput_wide.java
new file mode 100644
index 0000000..29ff21b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/Test_sput_wide.java
@@ -0,0 +1,338 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_wide;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_1;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_10;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_11;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_12;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_13;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_14;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_15;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_17;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_5;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_7;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_8;
+import dot.junit.opcodes.sput_wide.d.T_sput_wide_9;
+
+public class Test_sput_wide extends DxTestCase {
+    /**
+     * @title put long into static field
+     */
+    public void testN1() {
+        T_sput_wide_1 t = new T_sput_wide_1();
+        assertEquals(0, T_sput_wide_1.st_i1);
+        t.run();
+        assertEquals(778899112233l, T_sput_wide_1.st_i1);
+    }
+
+    /**
+     * @title put double into static field
+     */
+    public void testN2() {
+        T_sput_wide_5 t = new T_sput_wide_5();
+        assertEquals(0.0d, T_sput_wide_5.st_i1);
+        t.run();
+        assertEquals(0.5d, T_sput_wide_5.st_i1);
+    }
+
+
+    /**
+     * @title modification of final field
+     */
+    public void testN3() {
+        T_sput_wide_12 t = new T_sput_wide_12();
+        assertEquals(0, T_sput_wide_12.st_i1);
+        t.run();
+        assertEquals(77, T_sput_wide_12.st_i1);
+    }
+
+    /**
+     * @title modification of protected field from subclass
+     */
+    public void testN4() {
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_1
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_14
+        T_sput_wide_14 t = new T_sput_wide_14();
+        assertEquals(0, T_sput_wide_14.getProtectedField());
+        t.run();
+        assertEquals(77, T_sput_wide_14.getProtectedField());
+    }
+
+    /**
+     * @title initialization of referenced class throws exception
+     */
+    public void testE6() {
+        T_sput_wide_13 t = new T_sput_wide_13();
+        try {
+            t.run();
+            fail("expected Error");
+        } catch (Error e) {
+            // expected
+        }
+    }
+
+    /**
+     * @constraint A12
+     * @title constant pool index
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A23
+     * @title number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     *
+     * @constraint B13
+     * @title put int into long field - only field with same name but
+     * different type exists
+     */
+    public void testVFE5() {
+        try {
+            new T_sput_wide_17().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     *
+     * @constraint B13
+     * @title type of field doesn't match opcode - attempt to modify float
+     * field with double-width register
+     */
+    public void testVFE7() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_18");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint A12
+     * @title Attempt to set non-static field.Dalvik throws IncompatibleClassChangeError when
+     * executing the code.
+     */
+    public void testVFE8() {
+         try {
+             new T_sput_wide_7().run();
+             fail("expected IncompatibleClassChangeError");
+         } catch (IncompatibleClassChangeError t) {
+         }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify inaccessible field. Dalvik throws IllegalAccessError when executing
+     * the code.
+     */
+    public void testVFE9() {
+        //@uses dot.junit.opcodes.sput_wide.TestStubs
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_8
+        try {
+            new T_sput_wide_8().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify field of undefined class. Dalvik throws NoClassDefFoundError when
+     * executing the code.
+     */
+    public void testVFE10() {
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_9
+        try {
+            new T_sput_wide_9().run();
+            fail("expected NoClassDefFoundError");
+        } catch (NoClassDefFoundError t) {
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify undefined field. Dalvik throws NoSuchFieldError when executing the
+     * code.
+     */
+    public void testVFE11() {
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_10
+        try {
+            new T_sput_wide_10().run();
+            fail("expected NoSuchFieldError");
+        } catch (NoSuchFieldError t) {
+        }
+    }
+
+
+
+    /**
+     * @constraint n/a
+     * @title Attempt to modify superclass' private field from subclass. Dalvik throws
+     * IllegalAccessError when executing the code.
+     */
+    public void testVFE12() {
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_1
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_15
+        try {
+            new T_sput_wide_15().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+    /**
+     * @constraint B1
+     * @title sput-wide shall not work for single-width numbers
+     */
+    public void testVFE13() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-wide shall not work for reference fields
+     */
+    public void testVFE14() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_20");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-wide shall not work for char fields
+     */
+    public void testVFE15() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_21");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-wide shall not work for int fields
+     */
+    public void testVFE16() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_22");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-wide shall not work for byte fields
+     */
+    public void testVFE17() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_23");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-wide shall not work for boolean fields
+     */
+    public void testVFE18() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_24");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     *
+     * @constraint B1
+     * @title sput-wide shall not work for short fields
+     */
+    public void testVFE6() {
+        try {
+            Class.forName("dot.junit.opcodes.sput_wide.d.T_sput_wide_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint n/a
+     * @title Modification of final field in other class
+     */
+    public void testVFE19() {
+        //@uses dot.junit.opcodes.sput_wide.TestStubs
+        //@uses dot.junit.opcodes.sput_wide.d.T_sput_wide_11
+    	try {
+            new T_sput_wide_11().run();
+            fail("expected IllegalAccessError");
+        } catch (IllegalAccessError t) {
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.d
new file mode 100644
index 0000000..94e2898
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.d
@@ -0,0 +1,46 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_1.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_1
+.super java/lang/Object
+
+.field public static st_i1 J
+.field protected static st_p1 J
+.field private static st_pvt1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public static getPvtField()J
+.limit regs 2
+
+       sget-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_pvt1 J
+       return-wide v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 778899112233
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.java
new file mode 100644
index 0000000..422b3c9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_1.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_1 {
+    public static long st_i1;
+    protected static long st_p1;
+    private static long st_pvt1;
+    
+    public void run() {
+        st_i1 = 778899112233l;
+    }
+    
+    public static long getPvtField()
+    {
+        return st_pvt1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.d
new file mode 100644
index 0000000..65a6012
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_10.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_10
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_10.st_i1N J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.java
new file mode 100644
index 0000000..b275744
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_10.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_10 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.d
new file mode 100644
index 0000000..7cf07a0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_11.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_11
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.TestStubs.TestStubFieldFinal J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.java
new file mode 100644
index 0000000..c458f05
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_11.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_11 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.d
new file mode 100644
index 0000000..23fc53b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_12.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_12
+.super java/lang/Object
+
+.field public static final st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 77
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_12.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.java
new file mode 100644
index 0000000..3f0f128
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_12.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_12 {
+    public static long st_i1;
+    
+    public void run() {
+        st_i1 = 77;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.d
new file mode 100644
index 0000000..a130809
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.d
@@ -0,0 +1,53 @@
+; Copyright (C) 2008 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.
+
+.source JtubInitError.java
+.class public dot.junit.opcodes.sput_wide.d.JtubInitError
+.super java/lang/Object
+
+.field public static value J
+
+.method static <clinit>()V
+.limit regs 2
+
+       const/4 v0, 0
+       const/4 v1, 5
+       div-int/2addr v1, v0
+
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.JtubInitError.value J
+       return-void
+.end method
+
+
+.source T_sput_wide_13.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_13
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.JtubInitError.value J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.java
new file mode 100644
index 0000000..ab71754
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_13.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_wide.d;
+
+class StubInitError {
+    static long value = (long)(5 / 0); 
+}
+
+public class T_sput_wide_13 {
+    
+    public void run() {
+        StubInitError.value = 11;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.d
new file mode 100644
index 0000000..38d5ed5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.d
@@ -0,0 +1,42 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_14.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_14
+.super dot/junit/opcodes/sput_wide/d/T_sput_wide_1
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_wide/d/T_sput_wide_1/<init>()V
+       return-void
+.end method
+
+.method public static getProtectedField()J
+.limit regs 2
+
+       sget-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_p1 J
+       return-wide v0
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 77
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_p1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.java
new file mode 100644
index 0000000..c919ee5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_14.java
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_14 extends T_sput_wide_1{
+    
+    public void run() {
+        T_sput_wide_1.st_p1 = 77;
+    }
+    
+    public static long getProtectedField(){
+        return T_sput_wide_1.st_p1;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.d
new file mode 100644
index 0000000..88531b4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_15.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_15
+.super dot/junit/opcodes/sput_wide/d/T_sput_wide_1
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, dot/junit/opcodes/sput_wide/d/T_sput_wide_1/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_1.st_pvt1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.java
new file mode 100644
index 0000000..376cdd8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_15.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_15 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.d
new file mode 100644
index 0000000..ab57cb7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_17.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_17
+.super java/lang/Object
+
+.field public static st_i1 I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 1
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_17.st_i1 J
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.java
new file mode 100644
index 0000000..244fa5e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_17.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_17 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.d
new file mode 100644
index 0000000..463bdbd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_18.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_18.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_18
+.super java/lang/Object
+
+.field public static st_i1 F
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v1, 1.0
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_18.st_i1 F
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.d
new file mode 100644
index 0000000..84b5622
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_2.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_2
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 1
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_4.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.d
new file mode 100644
index 0000000..ca43933
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_20.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_20.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_20
+.super java/lang/Object
+
+.field public static st_o Ljava/lang/Object;
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       sput-wide v3, dot.junit.opcodes.sput_wide.d.T_sput_wide_20.st_o Ljava/lang/Object;
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.d
new file mode 100644
index 0000000..04cf574
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_21.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_21.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_21
+.super java/lang/Object
+
+.field public static st_c C
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 12    
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_21.st_c C
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.d
new file mode 100644
index 0000000..d89d3cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_22.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_22.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_22
+.super java/lang/Object
+
+.field public static st_i I
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_22.st_i I
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.d
new file mode 100644
index 0000000..da254f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_23.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_23.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_23
+.super java/lang/Object
+
+.field public static st_b B
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_23.st_b B
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.d
new file mode 100644
index 0000000..e663946
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_24.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_24.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_24
+.super java/lang/Object
+
+.field public static st_z Z
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+       const-wide v0, 1    
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_24.st_z Z
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.d
new file mode 100644
index 0000000..344db70
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_3.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_3
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_3.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dfh b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dfh
new file mode 100644
index 0000000..4236b7c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dfh
@@ -0,0 +1,261 @@
+// Processing 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dex'...
+// Opened 'dalvik-opcodes/out/classes_dasm/dot/junit/opcodes/sput_wide/d/T_sput_wide_3.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 91f343d1
+    D1 43 F3 91 
+// parsed: offset 12, len 20: signature           : 659a...c933
+    65 9A 3C 32 A2 38 1F 9A AB B7 C9 11 22 6C 75 97 DF 86 C9 33 
+// parsed: offset 32, len 4: file_size           : 560
+    30 02 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 424 (0x0001a8)
+    A8 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 8
+    08 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 4
+    04 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 144 (0x000090)
+    90 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 172 (0x0000ac)
+    AC 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 180 (0x0000b4)
+    B4 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 204 (0x0000cc)
+    CC 00 00 00 
+// parsed: offset 104, len 4: data_size           : 324
+    44 01 00 00 
+// parsed: offset 108, len 4: data_off            : 236 (0x0000ec)
+    EC 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 292 (0x000124) "<init>"
+    24 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 300 (0x00012c) "J"
+    2C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 303 (0x00012f) "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+    2F 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 350 (0x00015e) "Ljava/lang/Object;"
+    5E 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 370 (0x000172) "T_sput_wide_3.java"
+    72 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 390 (0x000186) "V"
+    86 01 00 00 
+// parsed: offset 136, len 4: [6] string_data_off: 393 (0x000189) "run"
+    89 01 00 00 
+// parsed: offset 140, len 4: [7] string_data_off: 398 (0x00018e) "st_i1"
+    8E 01 00 00 
+
+// type_ids:
+// parsed: offset 144, len 4: [0] descriptor_idx: 1 (0x000001) "J"
+    01 00 00 00 
+// parsed: offset 148, len 4: [1] descriptor_idx: 2 (0x000002) "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+    02 00 00 00 
+// parsed: offset 152, len 4: [2] descriptor_idx: 3 (0x000003) "Ljava/lang/Object;"
+    03 00 00 00 
+// parsed: offset 156, len 4: [3] descriptor_idx: 5 (0x000005) "V"
+    05 00 00 00 
+
+// proto_ids:
+// parsed: offset 160, len 12: [0] 
+//     shorty_idx: 5 (0x000005) "V"
+//     return_type_idx: 3 (0x000003) "V"
+//     parameters_off: 0 (0x000000)
+    05 00 00 00 03 00 00 00 00 00 00 00 
+
+// field_ids:
+// parsed: offset 172, len 8: [0] class_idx: 1 (0x000001)  type_idx: 0 (0x000000) name_idx: 7 (0x000007) "st_i1"
+    01 00 00 00 07 00 00 00 
+
+// methods_ids:
+// parsed: offset 180, len 8: [0] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+// parsed: offset 188, len 8: [1] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 6 (0x000006) "run"
+    01 00 00 00 06 00 00 00 
+// parsed: offset 196, len 8: [2] class_idx: 2 (0x000002)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    02 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 204, len 32: Class [0]
+//     class_idx: 1 "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 2 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 4 "T_sput_wide_3.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 405 (0x000195)
+//     static_values_off: 0 (0x000000)
+    01 00 00 00 01 00 00 00 02 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 95 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.opcodes.sput_wide.d.T_sput_wide_3.<init>"
+    // parsed: offset 236, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 238, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 240, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 242, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 244, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 248, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 252, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 258, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.opcodes.sput_wide.d.T_sput_wide_3.run"
+    // parsed: offset 260, len 2: registers_size: 3
+        03 00 
+    // parsed: offset 262, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 264, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 266, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 268, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 272, len 4: insns_size: 8
+        08 00 00 00 
+    // insns:
+        // parsed: offset 276, len 10: |0000: const-wide v0, #double 0.000000 // #0x0000000000000001 long
+            18 00 01 00 00 00 00 00 00 00 
+        // parsed: offset 286, len 4: |0005: sput-wide v0, Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;.st_i1:J // field@0000
+//@mod            68 00 00 00 
+            68 00 00 01 
+        // parsed: offset 290, len 2: |0007: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 292, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 300, len 3: TYPE_STRING_DATA_ITEM [1] "J"
+    01 4A 00 
+// parsed: offset 303, len 47: TYPE_STRING_DATA_ITEM [2] "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+    2D 4C 64 6F 74 2F 6A 75 6E 69 74 2F 6F 70 63 6F 64 65 73 2F 73 70 75 74 5F 77 69 64 65 2F 64 2F 54 5F 73 70 75 74 5F 77 69 64 65 5F 33 3B 00 
+// parsed: offset 350, len 20: TYPE_STRING_DATA_ITEM [3] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 370, len 20: TYPE_STRING_DATA_ITEM [4] "T_sput_wide_3.java"
+    12 54 5F 73 70 75 74 5F 77 69 64 65 5F 33 2E 6A 61 76 61 00 
+// parsed: offset 390, len 3: TYPE_STRING_DATA_ITEM [5] "V"
+    01 56 00 
+// parsed: offset 393, len 5: TYPE_STRING_DATA_ITEM [6] "run"
+    03 72 75 6E 00 
+// parsed: offset 398, len 7: TYPE_STRING_DATA_ITEM [7] "st_i1"
+    05 73 74 5F 69 31 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/opcodes/sput_wide/d/T_sput_wide_3;"
+    // parsed: offset 405, len 1: static_fields_size: 1
+        01 
+    // parsed: offset 406, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 407, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 408, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+        // field [0]:
+            // parsed: offset 409, len 1: field_idx_diff: 0 (field_idx: 0 "st_i1")
+                00 
+            // parsed: offset 410, len 1: access_flags: 0x000009 (PUBLIC STATIC)
+                09 
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 411, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 412, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 415, len 2: code_off: 236 (0x0000ec)
+                EC 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 417, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 418, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 419, len 2: code_off: 260 (0x000104)
+                84 02 
+// parsed: offset 421, len 3: PADDING
+    00 00 00 
+// map_list:
+    // parsed: offset 424, len 4: size: 11
+        0B 00 00 00 
+    // parsed: offset 428, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 440, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 112 (0x000070)
+        01 00 00 00 08 00 00 00 70 00 00 00 
+    // parsed: offset 452, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 4
+    //      offset: 144 (0x000090)
+        02 00 00 00 04 00 00 00 90 00 00 00 
+    // parsed: offset 464, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 160 (0x0000a0)
+        03 00 00 00 01 00 00 00 A0 00 00 00 
+    // parsed: offset 476, len 12: [4] type: 0x0004 TYPE_FIELD_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 172 (0x0000ac)
+        04 00 00 00 01 00 00 00 AC 00 00 00 
+    // parsed: offset 488, len 12: [5] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 180 (0x0000b4)
+        05 00 00 00 03 00 00 00 B4 00 00 00 
+    // parsed: offset 500, len 12: [6] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 204 (0x0000cc)
+        06 00 00 00 01 00 00 00 CC 00 00 00 
+    // parsed: offset 512, len 12: [7] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 236 (0x0000ec)
+        01 20 00 00 02 00 00 00 EC 00 00 00 
+    // parsed: offset 524, len 12: [8] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 8
+    //      offset: 292 (0x000124)
+        02 20 00 00 08 00 00 00 24 01 00 00 
+    // parsed: offset 536, len 12: [9] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 405 (0x000195)
+        00 20 00 00 01 00 00 00 95 01 00 00 
+    // parsed: offset 548, len 12: [10] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 424 (0x0001a8)
+        00 10 00 00 01 00 00 00 A8 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.d
new file mode 100644
index 0000000..0f29358
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_4.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_4
+.super java/lang/Object
+
+.field public static st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       sput-wide v3, dot.junit.opcodes.sput_wide.d.T_sput_wide_4.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.d
new file mode 100644
index 0000000..0918986
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.d
@@ -0,0 +1,38 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_5.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_5
+.super java/lang/Object
+
+.field public static st_i1 D
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 0.5
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_5.st_i1 D
+
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.java
new file mode 100644
index 0000000..1147ce0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_5.java
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_5 {
+    public static double st_i1;
+    
+    public void run() {
+        st_i1 = 0.5d;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.d
new file mode 100644
index 0000000..1552b40
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_6.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_6.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_6
+.super java/lang/Object
+
+.field public static st_i1 S
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 1
+       sput-wide v0, dot.junit.opcodes.sput_wide.d.T_sput_wide_6.st_i1 S
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.d
new file mode 100644
index 0000000..726dfff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_7.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_7
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 0
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_7.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.java
new file mode 100644
index 0000000..4608227
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_7.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_7 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.d
new file mode 100644
index 0000000..f14a34c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_8.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 0
+       sput-wide v1, dot.junit.opcodes.sput_wide.TestStubs.TestStubField J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.java
new file mode 100644
index 0000000..17cf144
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_8.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_8 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.d
new file mode 100644
index 0000000..64f57d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sput_wide_9.java
+.class public dot.junit.opcodes.sput_wide.d.T_sput_wide_9
+.super java/lang/Object
+
+.field public st_i1 J
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v1, 0
+       sput-wide v1, dot.junit.opcodes.sput_wide.d.T_sput_wide_9noclass.st_i1 J
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.java
new file mode 100644
index 0000000..00355dd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sput_wide/d/T_sput_wide_9.java
@@ -0,0 +1,22 @@
+/*
+ * Copyright (C) 2010 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 dot.junit.opcodes.sput_wide.d;
+
+public class T_sput_wide_9 {
+    public void run() {
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/Test_sub_double.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/Test_sub_double.java
new file mode 100644
index 0000000..5126c8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/Test_sub_double.java
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_double;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_double.d.T_sub_double_1;
+import dot.junit.opcodes.sub_double.d.T_sub_double_3;
+
+public class Test_sub_double extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(-0.43999999999999995d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title 
+     */
+    public void testN3() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, -2.7d));
+    }
+    
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this subtraction of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_double_3 t = new T_sub_double_3();
+        try {
+            t.run(12345l, 3.14d);
+        } catch (Throwable e) {
+        }
+    }  
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = +0d, +0d
+     */
+    public void testB7() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(+0d, t.run(+0d, +0d));
+    }
+
+    /**
+     * @title Arguments = 2.7d, 2.7d
+     */
+    public void testB8() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(0d, t.run(2.7d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB9() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(0d, t.run(Double.MAX_VALUE, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, 4.9E-324
+     */
+    public void testB10() {
+        T_sub_double_1 t = new T_sub_double_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, 4.9E-324));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double.d.T_sub_double_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double.d.T_sub_double_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double.d.T_sub_double_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double.d.T_sub_double_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.d
new file mode 100644
index 0000000..99060a2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_double_1.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.java
new file mode 100644
index 0000000..7193f2e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_double.d;
+
+public class T_sub_double_1 {
+
+    public double run(double a, double b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.d
new file mode 100644
index 0000000..e202f3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_double_2.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       const v3, 3.1415
+       sub-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.d
new file mode 100644
index 0000000..ac2644e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_double_3.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 7
+
+       sub-double v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.java
new file mode 100644
index 0000000..9b8ee8e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_double.d;
+
+public class T_sub_double_3 {
+
+    public double run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.d
new file mode 100644
index 0000000..cf89f31
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_double_4.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double v0, v3, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.d
new file mode 100644
index 0000000..69bbda7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_double_5.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.d
new file mode 100644
index 0000000..6995970
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double/d/T_sub_double_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_double_6.java
+.class public dot.junit.opcodes.sub_double.d.T_sub_double_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 7
+       move v0, v5
+       move v1, v5
+       move v2, v6
+       move v3, v6       
+       sub-double v0, v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/Test_sub_double_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/Test_sub_double_2addr.java
new file mode 100644
index 0000000..bdd4206
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/Test_sub_double_2addr.java
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_double_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_1;
+import dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_3;
+
+public class Test_sub_double_2addr extends DxTestCase {
+     /**
+     * @title Arguments = 2.7d, 3.14d
+     */
+    public void testN1() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(-0.43999999999999995d, t.run(2.7d, 3.14d));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14d
+     */
+    public void testN2() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(3.14d, t.run(0, -3.14d));
+    }
+
+    /**
+     * @title 
+     */
+    public void testN3() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(-0.43999999999999995d, t.run(-3.14d, -2.7d));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this subtraction of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_double_2addr_3 t = new T_sub_double_2addr_3();
+        try {
+            t.run(12345l, 3.14d);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.NaN
+     */
+    public void testB1() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.MAX_VALUE, Double.NaN));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                Double.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY,
+     * Double.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(Double.NaN, t.run(Double.POSITIVE_INFINITY,
+                Double.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Double.POSITIVE_INFINITY, -2.7d
+     */
+    public void testB4() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(Double.POSITIVE_INFINITY, t.run(Double.POSITIVE_INFINITY,
+                -2.7d));
+    }
+
+    /**
+     * @title Arguments = +0, -0d
+     */
+    public void testB5() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(+0d, t.run(+0d, -0d));
+    }
+
+    /**
+     * @title Arguments = -0d, -0d
+     */
+    public void testB6() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(0d, t.run(-0d, -0d));
+    }
+
+    /**
+     * @title Arguments = +0d, +0d
+     */
+    public void testB7() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(+0d, t.run(+0d, +0d));
+    }
+
+    /**
+     * @title Arguments = 2.7d, 2.7d
+     */
+    public void testB8() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(0d, t.run(2.7d, 2.7d));
+    }
+
+    /**
+     * @title Arguments = Double.MAX_VALUE, Double.MAX_VALUE
+     */
+    public void testB9() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(0d, t.run(Double.MAX_VALUE, Double.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Double.MIN_VALUE, 4.9E-324
+     */
+    public void testB10() {
+        T_sub_double_2addr_1 t = new T_sub_double_2addr_1();
+        assertEquals(0d, t.run(Double.MIN_VALUE, 4.9E-324));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - float, double
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A24 
+     * @title  number of registers
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - double, reference
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint B1 
+     * @title  types of arguments - int, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.d
new file mode 100644
index 0000000..8df12c1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_double_2addr_1.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.java
new file mode 100644
index 0000000..d99e5ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_double_2addr.d;
+
+public class T_sub_double_2addr_1 {
+
+    public double run(double a, double b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.d
new file mode 100644
index 0000000..0b37443c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_double_2addr_2.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       const v3, 3.1415
+       sub-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.d
new file mode 100644
index 0000000..a866a14
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_double_2addr_3.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)D
+.limit regs 7
+
+       sub-double/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.java
new file mode 100644
index 0000000..eb60bf7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_double_2addr.d;
+
+public class T_sub_double_2addr_3 {
+
+    public double run(long a, double b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.d
new file mode 100644
index 0000000..a3236ef
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_double_2addr_4.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double/2addr v3, v2
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.d
new file mode 100644
index 0000000..aa69895
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_double_2addr_5.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DD)D
+.limit regs 7
+
+       sub-double/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.d
new file mode 100644
index 0000000..07bc954
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_double_2addr/d/T_sub_double_2addr_6.d
@@ -0,0 +1,37 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_double_6.java
+.class public dot.junit.opcodes.sub_double_2addr.d.T_sub_double_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)V
+.limit regs 7
+       move v0, v5
+       move v1, v5
+       move v2, v6
+       move v3, v6       
+       sub-double/2addr v0, v2
+       return-void
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/Test_sub_float.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/Test_sub_float.java
new file mode 100644
index 0000000..2e41c99
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/Test_sub_float.java
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_float;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_float.d.T_sub_float_1;
+import dot.junit.opcodes.sub_float.d.T_sub_float_5;
+
+
+public class Test_sub_float extends DxTestCase {
+
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(-0.44000006f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title 
+     */
+    public void testN3() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, -2.7f));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this subtraction of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_float_5 t = new T_sub_float_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = +0f, +0f
+     */
+    public void testB7() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(+0f, t.run(+0f, +0f));
+    }
+
+    /**
+     * @title Arguments = 2.7f, 2.7f
+     */
+    public void testB8() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(0f, t.run(2.7f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB9() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(0f, t.run(Float.MAX_VALUE, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB10() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, 1.4E-45f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -Float.MAX_VALUE
+     */
+    public void testB11() {
+        T_sub_float_1 t = new T_sub_float_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                -3.402823E+38F));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float.d.T_sub_float_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float.d.T_sub_float_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float.d.T_sub_float_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float.d.T_sub_float_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.d
new file mode 100644
index 0000000..39f6708
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_float_1.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.java
new file mode 100644
index 0000000..573404e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_float.d;
+
+public class T_sub_float_1 {
+
+    public float run(float a, float b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.d
new file mode 100644
index 0000000..c144976
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_float_2.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 5
+
+       move v2, v3
+       const-wide v3, 3.1415
+       sub-float v0, v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.d
new file mode 100644
index 0000000..0456de2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_float_3.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 5
+
+       move v2, v3
+       const-wide v3, 9475928
+       sub-float v0, v3, v2
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.d
new file mode 100644
index 0000000..1c73e66
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_float_4.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.d
new file mode 100644
index 0000000..c851a5b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_float_5.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 4
+
+       sub-float v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.java
new file mode 100644
index 0000000..dd3a944
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_float.d;
+
+public class T_sub_float_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.d
new file mode 100644
index 0000000..c069f2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float/d/T_sub_float_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_float_6.java
+.class public dot.junit.opcodes.sub_float.d.T_sub_float_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/Test_sub_float_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/Test_sub_float_2addr.java
new file mode 100644
index 0000000..5d934b1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/Test_sub_float_2addr.java
@@ -0,0 +1,210 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_float_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_1;
+import dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_5;
+
+public class Test_sub_float_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 2.7f, 3.14f
+     */
+    public void testN1() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(-0.44000006f, t.run(2.7f, 3.14f));
+    }
+
+    /**
+     * @title Arguments = 0, -3.14f
+     */
+    public void testN2() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(3.14f, t.run(0, -3.14f));
+    }
+
+    /**
+     * @title 
+     */
+    public void testN3() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(-0.44000006f, t.run(-3.14f, -2.7f));
+    }
+
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this subtraction of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_float_2addr_5 t = new T_sub_float_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.NaN
+     */
+    public void testB1() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.MAX_VALUE, Float.NaN));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.NEGATIVE_INFINITY
+     */
+    public void testB2() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                Float.NEGATIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY,
+     * Float.POSITIVE_INFINITY
+     */
+    public void testB3() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.NaN, t.run(Float.POSITIVE_INFINITY,
+                Float.POSITIVE_INFINITY));
+    }
+
+    /**
+     * @title Arguments = Float.POSITIVE_INFINITY, -2.7f
+     */
+    public void testB4() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.POSITIVE_INFINITY,
+                -2.7f));
+    }
+
+    /**
+     * @title Arguments = +0, -0f
+     */
+    public void testB5() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(+0f, t.run(+0f, -0f));
+    }
+
+    /**
+     * @title Arguments = -0f, -0f
+     */
+    public void testB6() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(0f, t.run(-0f, -0f));
+    }
+
+    /**
+     * @title Arguments = +0f, +0f
+     */
+    public void testB7() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(+0f, t.run(+0f, +0f));
+    }
+
+    /**
+     * @title Arguments = 2.7f, 2.7f
+     */
+    public void testB8() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(0f, t.run(2.7f, 2.7f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, Float.MAX_VALUE
+     */
+    public void testB9() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(0f, t.run(Float.MAX_VALUE, Float.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Float.MIN_VALUE, -1.4E-45f
+     */
+    public void testB10() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(0f, t.run(Float.MIN_VALUE, 1.4E-45f));
+    }
+
+    /**
+     * @title Arguments = Float.MAX_VALUE, -Float.MAX_VALUE
+     */
+    public void testB11() {
+        T_sub_float_2addr_1 t = new T_sub_float_2addr_1();
+        assertEquals(Float.POSITIVE_INFINITY, t.run(Float.MAX_VALUE,
+                -3.402823E+38F));
+    }
+
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.d
new file mode 100644
index 0000000..d1c6e61
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_float_2addr_1.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.java
new file mode 100644
index 0000000..0838c38
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_float_2addr.d;
+
+public class T_sub_float_2addr_1 {
+
+    public float run(float a, float b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.d
new file mode 100644
index 0000000..3f3b632
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_float_2addr_2.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 5
+
+       move v2, v3
+       const-wide v3, 3.1415
+       sub-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.d
new file mode 100644
index 0000000..5a5f610
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_3.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_float_2addr_3.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 5
+
+       move v2, v3
+       const-wide v3, 9475928
+       sub-float/2addr v3, v2
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.d
new file mode 100644
index 0000000..f60a149
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_float_2addr_4.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.d
new file mode 100644
index 0000000..561ed3c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_float_2addr_5.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)F
+.limit regs 4
+
+       sub-float/2addr v2, v3
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.java
new file mode 100644
index 0000000..5a0c748
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_float_2addr.d;
+
+public class T_sub_float_2addr_5 {
+
+    public float run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.d
new file mode 100644
index 0000000..8d94709
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_float_2addr/d/T_sub_float_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_float_2addr_6.java
+.class public dot.junit.opcodes.sub_float_2addr.d.T_sub_float_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(FF)F
+.limit regs 4
+
+       sub-float/2addr v2, v4
+       return v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/Test_sub_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/Test_sub_int.java
new file mode 100644
index 0000000..4a491cf
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/Test_sub_int.java
@@ -0,0 +1,196 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_int.d.T_sub_int_1;
+import dot.junit.opcodes.sub_int.d.T_sub_int_5;
+
+public class Test_sub_int extends DxTestCase {
+
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(4, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, -2147483647));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this subtraction of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_sub_int_5 t = new  T_sub_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-2147483647, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, -1
+     */
+    public void testB3() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-2147483648, t.run(0, -Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB7() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(2147483646, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB8() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-2147483647, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB9() {
+        T_sub_int_1 t = new T_sub_int_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int.d.T_sub_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int.d.T_sub_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int.d.T_sub_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int.d.T_sub_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.d
new file mode 100644
index 0000000..019f739
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_int_1.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       sub-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.java
new file mode 100644
index 0000000..46c8b3b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_int.d;
+
+public class T_sub_int_1 {
+
+    public int run(int a, int b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.d
new file mode 100644
index 0000000..2d6c43f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_int_2.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 123456.0
+       sub-int v0, v2, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.d
new file mode 100644
index 0000000..4ff0912
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_int_3.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 123456675
+       sub-int v0, v0, v2
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.d
new file mode 100644
index 0000000..f3b57fc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_int_4.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       sub-int v0, v1, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.d
new file mode 100644
index 0000000..f813789
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_int_5.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 4
+
+       sub-int v0, v2, v3
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.java
new file mode 100644
index 0000000..ecc613b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_int.d;
+
+public class T_sub_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.d
new file mode 100644
index 0000000..b45a470
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int/d/T_sub_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_int_6.java
+.class public dot.junit.opcodes.sub_int.d.T_sub_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       sub-int v0, v2, v4
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/Test_sub_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/Test_sub_int_2addr.java
new file mode 100644
index 0000000..cabd0f6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/Test_sub_int_2addr.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_1;
+import dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_5;
+
+public class Test_sub_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 8, 4
+     */
+    public void testN1() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(4, t.run(8, 4));
+    }
+
+    /**
+     * @title Arguments = 0, 255
+     */
+    public void testN2() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-255, t.run(0, 255));
+    }
+
+    /**
+     * @title Arguments = 0, -65536
+     */
+    public void testN3() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(65536, t.run(0, -65536));
+    }
+
+    /**
+     * @title Arguments = 0, -2147483647
+     */
+    public void testN4() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(0, -2147483647));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this subtraction of float and int makes no sense but shall not crash the VM.  
+     */
+    public void testN5() {
+        T_sub_int_2addr_5 t = new  T_sub_int_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+    /**
+     * @title Arguments = 0, Integer.MAX_VALUE
+     */
+    public void testB1() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-2147483647, t.run(0, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MAX_VALUE
+     */
+    public void testB2() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(0, t.run(Integer.MAX_VALUE, Integer.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, -1
+     */
+    public void testB3() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(Integer.MIN_VALUE, t.run(Integer.MAX_VALUE, -1));
+    }
+
+    /** 
+     * @title Arguments = Integer.MIN_VALUE, 1
+     */
+    public void testB4() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(Integer.MAX_VALUE, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 0, 0
+     */
+    public void testB5() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(0, t.run(0, 0));
+    }
+
+    /**
+     * @title Arguments = 0, -Integer.MIN_VALUE
+     */
+    public void testB6() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-2147483648, t.run(0, -Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, 1
+     */
+    public void testB7() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(2147483646, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1, Integer.MIN_VALUE
+     */
+    public void testB8() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-2147483647, t.run(1, Integer.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB9() {
+        T_sub_int_2addr_1 t = new T_sub_int_2addr_1();
+        assertEquals(-1, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.d
new file mode 100644
index 0000000..203da0d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_int_2addr_1.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       sub-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.java
new file mode 100644
index 0000000..03dcff2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_int_2addr.d;
+
+public class T_sub_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a-b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.d
new file mode 100644
index 0000000..e3e5cab
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_int_2addr_2.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 123456.0
+       sub-int/2addr v2, v0
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.d
new file mode 100644
index 0000000..cad0b89
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_int_2addr_3.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide v0, 123456675
+       sub-int/2addr v0, v2
+       return v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.d
new file mode 100644
index 0000000..efce9cc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_int_2addr_4.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       sub-int/2addr v0, v2
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.d
new file mode 100644
index 0000000..77b2c6f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_int_2addr_5.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       sub-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.java
new file mode 100644
index 0000000..14c9b65
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_int_2addr.d;
+
+public class T_sub_int_2addr_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.d
new file mode 100644
index 0000000..1705eb7e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_int_2addr/d/T_sub_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_int_2addr_6.java
+.class public dot.junit.opcodes.sub_int_2addr.d.T_sub_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       sub-int/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/Test_sub_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/Test_sub_long.java
new file mode 100644
index 0000000..913ed6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/Test_sub_long.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_long.d.T_sub_long_1;
+import dot.junit.opcodes.sub_long.d.T_sub_long_2;
+
+public class Test_sub_long extends DxTestCase {
+
+    /**
+     * @title Arguments = 1111127348242l, 11111111114l
+     */
+    public void testN1() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(1100016237128l, t.run(1111127348242l, 11111111114l));
+    }
+
+    /**
+     * @title Arguments = 0, 1111127348242l
+     */
+    public void testN2() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(-1111127348242l, t.run(0, 1111127348242l));
+    }
+
+    /**
+     * @title Arguments = 0, -11111111114l
+     */
+    public void testN3() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(11111111114l, t.run(0, -11111111114l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this subtraction of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+         T_sub_long_2 t = new  T_sub_long_2();
+        try {
+            t.run(12345l, 3.14d);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = 0l, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(-9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 9223372036854775807L, Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(0l, t.run(9223372036854775807L, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1l
+     */
+    public void testB3() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB4() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(9223372036854775807L, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = 0l, 0l
+     */
+    public void testB5() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title Arguments = 0l, -Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_sub_long_1 t = new T_sub_long_1();
+        assertEquals(-9223372036854775808L, t.run(0l, -Long.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long.d.T_sub_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long.d.T_sub_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long.d.T_sub_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, reference
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long.d.T_sub_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.d
new file mode 100644
index 0000000..4367232
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_long_1.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       sub-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.java
new file mode 100644
index 0000000..24a0f90
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_long.d;
+
+public class T_sub_long_1 {
+    
+    public long run(long a, long b) {
+        return a-b;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.d
new file mode 100644
index 0000000..6e191ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_long_2.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 7
+       sub-long v0, v3, v5
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.java
new file mode 100644
index 0000000..733b4dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_long.d;
+
+public class T_sub_long_2 {
+    
+    public long run(long a, double b) {
+        return 0;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.d
new file mode 100644
index 0000000..5fe421f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_long_3.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       const v3, 12346
+       sub-long v0, v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.d
new file mode 100644
index 0000000..7ab2d2d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_long_4.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       const v5, 12346.0
+       sub-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.d
new file mode 100644
index 0000000..c498408
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_long_5.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       sub-long v0, v3, v2
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.d
new file mode 100644
index 0000000..f9f2065
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long/d/T_sub_long_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_long_6.java
+.class public dot.junit.opcodes.sub_long.d.T_sub_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       sub-long v0, v3, v7
+       return-wide v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/Test_sub_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/Test_sub_long_2addr.java
new file mode 100644
index 0000000..27a3d09
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/Test_sub_long_2addr.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_1;
+import dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_2;
+
+public class Test_sub_long_2addr extends DxTestCase {
+
+    /**
+     * @title Arguments = 1111127348242l, 11111111114l
+     */
+    public void testN1() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(1100016237128l, t.run(1111127348242l, 11111111114l));
+    }
+
+    /**
+     * @title Arguments = 0, 1111127348242l
+     */
+    public void testN2() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(-1111127348242l, t.run(0, 1111127348242l));
+    }
+
+    /**
+     * @title Arguments = 0, -11111111114l
+     */
+    public void testN3() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(11111111114l, t.run(0, -11111111114l));
+    }
+
+    /**
+     * @title Types of arguments - long, double. Dalvik doens't distinguish 64-bits types internally,
+     * so this subtraction of double and long makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_sub_long_2addr_2 t = new  T_sub_long_2addr_2();
+        try {
+            t.run(12345l, 3.14d);
+        } catch (Throwable e) {
+        }
+    }  
+    
+    /**
+     * @title Arguments = 0l, Long.MAX_VALUE
+     */
+    public void testB1() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(-9223372036854775807L, t.run(0l, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = 9223372036854775807L, Long.MAX_VALUE
+     */
+    public void testB2() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(0l, t.run(9223372036854775807L, Long.MAX_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE, -1l
+     */
+    public void testB3() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(Long.MAX_VALUE, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE, 1l
+     */
+    public void testB4() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(9223372036854775807L, t.run(Long.MIN_VALUE, 1l));
+    }
+
+    /**
+     * @title Arguments = 0l, 0l
+     */
+    public void testB5() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(0l, t.run(0l, 0l));
+    }
+
+    /**
+     * @title Arguments = 0l, -Long.MIN_VALUE
+     */
+    public void testB6() {
+        T_sub_long_2addr_1 t = new T_sub_long_2addr_1();
+        assertEquals(-9223372036854775808L, t.run(0l, -Long.MIN_VALUE));
+    }
+
+    
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, float
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.d
new file mode 100644
index 0000000..f416a03
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_long_2addr_1.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       sub-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.java
new file mode 100644
index 0000000..8d66c2b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_1.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_long_2addr.d;
+
+public class T_sub_long_2addr_1 {
+    
+    public long run(long a, long b) {
+        return a-b;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.d
new file mode 100644
index 0000000..eb91aff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_long_2addr_2.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 7
+       sub-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.java
new file mode 100644
index 0000000..33f4b88
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_2.java
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.sub_long_2addr.d;
+
+public class T_sub_long_2addr_2 {
+    
+    public long run(long a, double b) {
+        return 0;
+    }
+    
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.d
new file mode 100644
index 0000000..bea4aea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_long_2addr_3.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       const v3, 12346
+       sub-long/2addr v3, v5
+       return-wide v5
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.d
new file mode 100644
index 0000000..57d6c24
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_long_2addr_4.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+       const v5, 12346.0
+       sub-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.d
new file mode 100644
index 0000000..da99ce1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_long_2addr_5.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       sub-long/2addr v3, v2
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.d
new file mode 100644
index 0000000..fb874e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/sub_long_2addr/d/T_sub_long_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_sub_long_2addr_6.java
+.class public dot.junit.opcodes.sub_long_2addr.d.T_sub_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 7
+
+       sub-long/2addr v3, v7
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/Test_ushr_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/Test_ushr_int.java
new file mode 100644
index 0000000..2701607
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/Test_ushr_int.java
@@ -0,0 +1,164 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_int.d.T_ushr_int_1;
+import dot.junit.opcodes.ushr_int.d.T_ushr_int_5;
+
+public class Test_ushr_int extends DxTestCase {
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0x7FFFFFF8, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(16, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (int >>> float) makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_ushr_int_5 t = new  T_ushr_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(0x40000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_int_1 t = new T_ushr_int_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int.d.T_ushr_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int.d.T_ushr_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int.d.T_ushr_int_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int.d.T_ushr_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.d
new file mode 100644
index 0000000..dd22d10
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_1.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.java
new file mode 100644
index 0000000..b633fc2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int.d;
+
+public class T_ushr_int_1 {
+
+    public int run(int a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.d
new file mode 100644
index 0000000..75880f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_2.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       move v1, v2
+       const-wide v2, 12345.0
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.d
new file mode 100644
index 0000000..802f349
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_3.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)I
+.limit regs 4
+
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.d
new file mode 100644
index 0000000..289c777
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_4.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int v1, v1, v0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.d
new file mode 100644
index 0000000..2fdf2b6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_5.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_5
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       ushr-int v1, v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.java
new file mode 100644
index 0000000..4b5c31f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int.d;
+
+public class T_ushr_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.d
new file mode 100644
index 0000000..b216968
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int/d/T_ushr_int_6.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_6.java
+.class public dot.junit.opcodes.ushr_int.d.T_ushr_int_6
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int v1, v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/Test_ushr_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/Test_ushr_int_2addr.java
new file mode 100644
index 0000000..e1c4217
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/Test_ushr_int_2addr.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_1;
+import dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_5;
+
+public class Test_ushr_int_2addr extends DxTestCase {
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(7, t.run(15, 1));
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(8, t.run(33, 2));
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0x7FFFFFF8, t.run(-15, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0, t.run(1, -1));
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(16, t.run(33, 33));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (int >>> float) makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_ushr_int_2addr_5 t = new  T_ushr_int_2addr_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0x3FFFFFFF, t.run(Integer.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(0x40000000, t.run(Integer.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_int_2addr_1 t = new T_ushr_int_2addr_1();
+        assertEquals(1, t.run(1, 0));
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.d
new file mode 100644
index 0000000..5ee3392
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_2addr_1.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.java
new file mode 100644
index 0000000..dd53d3d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_2addr.d;
+
+public class T_ushr_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.d
new file mode 100644
index 0000000..d7be0ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_2addr_2.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       move v1, v2
+       const-wide v2, 12345.0
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.d
new file mode 100644
index 0000000..a7e8263
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_3.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_2addr_3.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IJ)I
+.limit regs 4
+
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.d
new file mode 100644
index 0000000..330ce0a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_4.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_2addr_4.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int/2addr  v1, v0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.d
new file mode 100644
index 0000000..d5906eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_2addr_5.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       ushr-int/2addr v1, v2
+       return v1
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.java
new file mode 100644
index 0000000..3e1776c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_2addr.d;
+
+public class T_ushr_int_2addr_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.d
new file mode 100644
index 0000000..0e3753c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_2addr/d/T_ushr_int_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_2addr_6.java
+.class public dot.junit.opcodes.ushr_int_2addr.d.T_ushr_int_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       ushr-int/2addr v1, v3
+       return v1
+.end method
+
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/Test_ushr_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/Test_ushr_int_lit8.java
new file mode 100644
index 0000000..99b3ac9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/Test_ushr_int_lit8.java
@@ -0,0 +1,174 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_1;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_13;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_2;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_3;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_4;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_5;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_6;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_7;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_8;
+import dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_9;
+
+
+public class Test_ushr_int_lit8 extends DxTestCase {
+    /**
+     * @title 15 >> 1
+     */
+    public void testN1() {
+        T_ushr_int_lit8_1 t = new T_ushr_int_lit8_1();
+        assertEquals(7, t.run());
+    }
+
+    /**
+     * @title 33 >> 2
+     */
+    public void testN2() {
+        T_ushr_int_lit8_2 t = new T_ushr_int_lit8_2();
+        assertEquals(8, t.run());
+    }
+
+    /**
+     * @title -15 >> 1
+     */
+    public void testN3() {
+        T_ushr_int_lit8_3 t = new T_ushr_int_lit8_3();
+        assertEquals(0x7FFFFFF8, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_int_lit8_4 t = new T_ushr_int_lit8_4();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Verify that shift distance is actually in range 0 to 32.
+     */
+    public void testN5() {
+        T_ushr_int_lit8_5 t = new T_ushr_int_lit8_5();
+        assertEquals(16, t.run());
+    }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float >>> ) makes no sense but shall not crash the VM.  
+     */
+    public void testN6() {
+        T_ushr_int_lit8_13 t = new  T_ushr_int_lit8_13();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_int_lit8_6 t = new T_ushr_int_lit8_6();
+        assertEquals(0, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_int_lit8_7 t = new T_ushr_int_lit8_7();
+        assertEquals(0x3FFFFFFF, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_int_lit8_8 t = new T_ushr_int_lit8_8();
+        assertEquals(0x40000000, t.run());
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_int_lit8_9 t = new T_ushr_int_lit8_9();
+        assertEquals(1, t.run());
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - double, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_10");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_11");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_12");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_14");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.d
new file mode 100644
index 0000000..3d6d12d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_1.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 15
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.java
new file mode 100644
index 0000000..35f5305
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_1 {
+
+    public int run() {
+        return 15 >>> 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.d
new file mode 100644
index 0000000..66e89fa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_10.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_10.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_10
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide v0, 12345456788.0
+       ushr-int/lit8 v1, v0, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.d
new file mode 100644
index 0000000..d0b5a53
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_11.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_11.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_11
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+       const-wide v0, 12345456788
+       ushr-int/lit8 v1, v0, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.d
new file mode 100644
index 0000000..9925d72
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_12.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_12.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_12
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 2
+
+       ushr-int/lit8 v0, v1, 1
+       return v0
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.d
new file mode 100644
index 0000000..431983f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_13.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_13
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 3
+
+       ushr-int/lit8 v1, v2, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.java
new file mode 100644
index 0000000..42f09dc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_13.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_13 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.d
new file mode 100644
index 0000000..7bf0d26
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_14.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_14.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_14
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 3
+
+       ushr-int/lit8 v1, v3, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.d
new file mode 100644
index 0000000..2727421
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_2.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 33
+       ushr-int/lit8 v1, v1, 2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.java
new file mode 100644
index 0000000..8ef472e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_2 {
+
+    public int run() {
+        return 32 >>> 2;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.d
new file mode 100644
index 0000000..d51d0ad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_3.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, -15
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.java
new file mode 100644
index 0000000..0917deb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_3 {
+
+    public int run() {
+        return -15 >>> 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.d
new file mode 100644
index 0000000..c69a8cd
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_4.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 1
+       ushr-int/lit8 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.java
new file mode 100644
index 0000000..e0224f5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_4 {
+
+    public int run() {
+        return 1 >>> -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.d
new file mode 100644
index 0000000..9e75732
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_5.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_5
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 33
+       ushr-int/lit8 v1, v1, 33
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.java
new file mode 100644
index 0000000..b1d83aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_5 {
+
+    public int run() {
+        return 33 >>> 33;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.d
new file mode 100644
index 0000000..8387c15
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_6.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_6
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 0
+       ushr-int/lit8 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.java
new file mode 100644
index 0000000..548014a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_6.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_6 {
+
+    public int run() {
+        return 0 >>> -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.d
new file mode 100644
index 0000000..1a49829
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_7.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_7
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.java
new file mode 100644
index 0000000..1e0b00f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_7 {
+
+    public int run() {
+        return Integer.MAX_VALUE >>> 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.d
new file mode 100644
index 0000000..415d6d6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_8.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_8
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, -2147483648
+       ushr-int/lit8 v1, v1, 1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.java
new file mode 100644
index 0000000..6e6a65e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_8.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_8 {
+
+    public int run() {
+        return Integer.MIN_VALUE >>> 1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.d
new file mode 100644
index 0000000..34be720
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_int_lit8_9.java
+.class public dot.junit.opcodes.ushr_int_lit8.d.T_ushr_int_lit8_9
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const/16 v1, 1
+       ushr-int/lit8 v1, v1, 0
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.java
new file mode 100644
index 0000000..a69257a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_int_lit8/d/T_ushr_int_lit8_9.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_int_lit8.d;
+
+public class T_ushr_int_lit8_9 {
+
+    public int run() {
+        return 1 >>> 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/Test_ushr_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/Test_ushr_long.java
new file mode 100644
index 0000000..338d067
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/Test_ushr_long.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_long.d.T_ushr_long_1;
+import dot.junit.opcodes.ushr_long.d.T_ushr_long_2;
+
+public class Test_ushr_long extends DxTestCase {
+    /**
+     * @title Arguments = 40000000000l, 3
+     */
+    public void testN1() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 1
+     */
+    public void testN3() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0x7FFFFFFFFC521975l, t.run(-123456789l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Arguments = 123456789l, 64
+     */
+    public void testN5() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(123456789l, t.run(123456789l, 64));
+    }
+    
+    /**
+     * @title Arguments = 123456789l, 63
+     */
+    public void testN6() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0l, t.run(123456789l, 63));
+    }
+    
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this (double >>> int) makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_ushr_long_2 t = new T_ushr_long_2();
+        try {
+            t.run(3.14d, 1);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(0x4000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_long_1 t = new T_ushr_long_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long.d.T_ushr_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.d
new file mode 100644
index 0000000..5479c4e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_1.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.java
new file mode 100644
index 0000000..1b2517e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_long.d;
+
+public class T_ushr_long_1 {
+
+    public long run(long a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.d
new file mode 100644
index 0000000..e8a6322
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_2.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 6
+
+       ushr-long v0, v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.java
new file mode 100644
index 0000000..e278f8a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_long.d;
+
+public class T_ushr_long_2 {
+
+    public long run(double b, int i) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.d
new file mode 100644
index 0000000..1a7a9eb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_3.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       move v2, v3
+       ushr-long v1, v2, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.d
new file mode 100644
index 0000000..03ae1aa
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_4.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 6
+
+       const v0, 12345.0
+       ushr-long v0, v0, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.d
new file mode 100644
index 0000000..05560ac
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_5.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long v1, v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.d
new file mode 100644
index 0000000..6e7d40a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_6.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long v1, v1, v4
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.d
new file mode 100644
index 0000000..d2f672b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long/d/T_ushr_long_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_7.java
+.class public dot.junit.opcodes.ushr_long.d.T_ushr_long_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 6
+
+       ushr-long v1, v2, v4
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/Test_ushr_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/Test_ushr_long_2addr.java
new file mode 100644
index 0000000..72747f47
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/Test_ushr_long_2addr.java
@@ -0,0 +1,184 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_1;
+import dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_2;
+
+public class Test_ushr_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments =  40000000000l, 3
+     */
+    public void testN1() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(5000000000l, t.run(40000000000l, 3));
+    }
+
+    /**
+     * @title Arguments = 40000000000l, 1
+     */
+    public void testN2() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(20000000000l, t.run(40000000000l, 1));
+    }
+
+    /**
+     * @title Arguments = -123456789l, 1
+     */
+    public void testN3() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0x7FFFFFFFFC521975l, t.run(-123456789l, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & -1
+     */
+    public void testN4() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0l, t.run(1l, -1));
+    }
+
+    /**
+     * @title Arguments = 123456789l, 64
+     */
+    public void testN5() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(123456789l, t.run(123456789l, 64));
+    }
+
+    /**
+     * @title Arguments = 123456789l, 63
+     */
+    public void testN6() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0l, t.run(123456789l, 63));
+    }
+
+    /**
+     * @title Types of arguments - double, int. Dalvik doens't distinguish 64-bits types internally,
+     * so this (double >>> int) makes no sense but shall not crash the VM.  
+     */
+    public void testN7() {
+        T_ushr_long_2addr_2 t = new T_ushr_long_2addr_2();
+        try {
+            t.run(3.14d, 1);
+        } catch (Throwable e) {
+        }
+    } 
+
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0l, t.run(0l, -1));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & 1
+     */
+    public void testB2() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0x3FFFFFFFFFFFFFFFl, t.run(Long.MAX_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = Long.MIN_VALUE & 1
+     */
+    public void testB3() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(0x4000000000000000l, t.run(Long.MIN_VALUE, 1));
+    }
+
+    /**
+     * @title Arguments = 1 & 0
+     */
+    public void testB4() {
+        T_ushr_long_2addr_1 t = new T_ushr_long_2addr_1();
+        assertEquals(1l, t.run(1l, 0));
+    }
+    
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, double
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_7");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, int
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - float, int
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, reference
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.d
new file mode 100644
index 0000000..4b154c5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_2addr_1.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.java
new file mode 100644
index 0000000..142cda3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_long_2addr.d;
+
+public class T_ushr_long_2addr_1 {
+
+    public long run(long a, int b) {
+        return a >>> b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.d
new file mode 100644
index 0000000..22a3e6d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_2addr_2.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DI)J
+.limit regs 6
+
+       ushr-long/2addr v3, v5
+       return-wide v3
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.java
new file mode 100644
index 0000000..af70b1c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.ushr_long_2addr.d;
+
+public class T_ushr_long_2addr_2 {
+
+    public long run(double a, int b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.d
new file mode 100644
index 0000000..c76441e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_2addr_3.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       move v0, v3
+       ushr-long/2addr v0, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.d
new file mode 100644
index 0000000..4f03522
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_2addr_4.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       const v1, 12345.0
+       ushr-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.d
new file mode 100644
index 0000000..12e930c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_2addr_5.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long/2addr v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.d
new file mode 100644
index 0000000..0d1898a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_2addr_6.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JI)J
+.limit regs 4
+
+       ushr-long/2addr v1, v4
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.d
new file mode 100644
index 0000000..b645617
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/ushr_long_2addr/d/T_ushr_long_2addr_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_ushr_long_2addr_7.java
+.class public dot.junit.opcodes.ushr_long_2addr.d.T_ushr_long_2addr_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JD)J
+.limit regs 6
+
+       ushr-long/2addr v2, v4
+       return-wide v2
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/Test_xor_int.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/Test_xor_int.java
new file mode 100644
index 0000000..8d976ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/Test_xor_int.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_int.d.T_xor_int_1;
+import dot.junit.opcodes.xor_int.d.T_xor_int_5;
+
+public class Test_xor_int extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+         T_xor_int_1 t = new T_xor_int_1();
+         assertEquals(7, t.run(15, 8));
+    }
+    
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+         T_xor_int_1 t = new T_xor_int_1();
+         assertEquals(9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe, -1
+     */
+    public void testN3() {
+         T_xor_int_1 t = new T_xor_int_1();
+         assertEquals(0xFFFF3501, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (int ^ float) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_xor_int_5 t = new  T_xor_int_5();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, -1
+     */
+    public void testB1() {
+        T_xor_int_1 t = new T_xor_int_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_int_1 t = new T_xor_int_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+    
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - long, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int.d.T_xor_int_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - reference, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int.d.T_xor_int_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int.d.T_xor_int_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.d
new file mode 100644
index 0000000..2c2fbfb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_1.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int v1, v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.java
new file mode 100644
index 0000000..75f5df4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int.d;
+
+public class T_xor_int_1 {
+
+    public int run(int a, int b) {
+        return a ^ b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.d
new file mode 100644
index 0000000..339a3e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_2.d
@@ -0,0 +1,36 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_2.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       move v1, v2 
+       const-wide/16 v2, 12345
+       xor-int v1, v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.d
new file mode 100644
index 0000000..b733277
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_3.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int v1, v1, v0
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.d
new file mode 100644
index 0000000..879afe5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_5.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       xor-int v1, v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.java
new file mode 100644
index 0000000..5c50e59
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_5.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int.d;
+
+public class T_xor_int_5 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.d
new file mode 100644
index 0000000..0768d87
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int/d/T_xor_int_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_6.java
+.class public dot.junit.opcodes.xor_int.d.T_xor_int_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int v1, v1, v3
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/Test_xor_int_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/Test_xor_int_2addr.java
new file mode 100644
index 0000000..630bf5d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/Test_xor_int_2addr.java
@@ -0,0 +1,117 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_1;
+import dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_4;
+
+public class Test_xor_int_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+         T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+         assertEquals(7, t.run(15, 8));
+    }
+    
+    /**
+     * @title Arguments = 0xfffffff8, 0xfffffff1
+     */
+    public void testN2() {
+         T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+         assertEquals(9, t.run(0xfffffff8, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xcafe, -1
+     */
+    public void testN3() {
+         T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+         assertEquals(0xFFFF3501, t.run(0xcafe, -1));
+    }
+    
+    /**
+     * @title Types of arguments - int, float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (int ^ float) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_xor_int_2addr_4 t = new  T_xor_int_2addr_4();
+        try {
+            t.run(1, 3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, -1
+     */
+    public void testB1() {
+        T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+        assertEquals(-1, t.run(0, -1));
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Integer.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_int_2addr_1 t = new T_xor_int_2addr_1();
+        assertEquals(0xffffffff, t.run(Integer.MAX_VALUE, Integer.MIN_VALUE));
+    }
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.d
new file mode 100644
index 0000000..561db60
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_2addr_1.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.java
new file mode 100644
index 0000000..2d4a699
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_2addr.d;
+
+public class T_xor_int_2addr_1 {
+
+    public int run(int a, int b) {
+        return a ^ b;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.d
new file mode 100644
index 0000000..7d19a9b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_2addr_2.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 4
+
+       const-wide/16 v2, 12345
+       xor-int/2addr v1, v2
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.d
new file mode 100644
index 0000000..f51a717
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_2addr_3.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int/2addr v1, v0
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.d
new file mode 100644
index 0000000..cc64eb3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_2addr_4.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(IF)I
+.limit regs 3
+
+       xor-int/2addr v1, v2
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.java
new file mode 100644
index 0000000..f779ebc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_2addr.d;
+
+public class T_xor_int_2addr_4 {
+
+    public int run(int a, float b) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.d
new file mode 100644
index 0000000..5430394
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_2addr/d/T_xor_int_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_2addr_5.java
+.class public dot.junit.opcodes.xor_int_2addr.d.T_xor_int_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(II)I
+.limit regs 3
+
+       xor-int/2addr v1, v3
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/Test_xor_int_lit16.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/Test_xor_int_lit16.java
new file mode 100644
index 0000000..e31a49c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/Test_xor_int_lit16.java
@@ -0,0 +1,113 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_lit16;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_1;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_2;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_3;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_4;
+import dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_7;
+
+public class Test_xor_int_lit16 extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+         T_xor_int_lit16_1 t = new T_xor_int_lit16_1();
+         assertEquals(7, t.run());
+     }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xfff1
+     */
+    public void testN2() {
+         T_xor_int_lit16_2 t = new T_xor_int_lit16_2();
+         assertEquals(9, t.run());
+     }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float ^ int) makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_xor_int_lit16_7 t = new T_xor_int_lit16_7();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, -1
+     */
+    public void testB1() {
+        T_xor_int_lit16_3 t = new T_xor_int_lit16_3();
+            assertEquals(-1, t.run());
+    }
+
+    /** 
+     * @title Arguments = Integer.MAX_VALUE, Short.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_int_lit16_4 t = new T_xor_int_lit16_4();
+            assertEquals(-2147450881, t.run());
+    }
+
+    
+    
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - long & int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference & int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.d
new file mode 100644
index 0000000..ba07a33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit16_1.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 15
+       xor-int/lit16 v1, v1, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.java
new file mode 100644
index 0000000..bff43df
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_1 {
+
+    public int run() {
+        return 15 ^ 8;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.d
new file mode 100644
index 0000000..6b5a110
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit16_2.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v2, -8
+       xor-int/lit16 v1, v2, -15
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.java
new file mode 100644
index 0000000..938a23d1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_2 {
+
+    public int run() {
+        return 0xfffffff8 ^ 0xfff1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.d
new file mode 100644
index 0000000..56f0458
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit16_3.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       xor-int/lit16 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.java
new file mode 100644
index 0000000..2bc9c62
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_3 {
+
+    public int run() {
+        return 0 ^ -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.d
new file mode 100644
index 0000000..ec92408
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit16_4.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       xor-int/lit16 v1, v1, -32768
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.java
new file mode 100644
index 0000000..6626871
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_4 {
+
+    public int run() {
+        return Integer.MAX_VALUE ^ Short.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.d
new file mode 100644
index 0000000..a0906e6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit16_5.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide/16 v2, 12345
+       xor-int/lit16 v1, v2, -32768
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.d
new file mode 100644
index 0000000..5aa6343
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit16_6.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       xor-int/lit16 v1, v2, 1
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.d
new file mode 100644
index 0000000..ea16bae
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit16_7.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 3
+
+       xor-int/lit16 v1, v2, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.java
new file mode 100644
index 0000000..d7b747e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_lit16.d;
+
+public class T_xor_int_lit16_7 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.d
new file mode 100644
index 0000000..5d8cb85
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit16/d/T_xor_int_lit16_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit16_8.java
+.class public dot.junit.opcodes.xor_int_lit16.d.T_xor_int_lit16_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 3
+
+       xor-int/lit16 v1, v3, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/Test_xor_int_lit8.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/Test_xor_int_lit8.java
new file mode 100644
index 0000000..e06d5e1
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/Test_xor_int_lit8.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_lit8;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_1;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_2;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_3;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_4;
+import dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_7;
+
+public class Test_xor_int_lit8 extends DxTestCase {
+    /**
+     * @title Arguments = 15, 8
+     */
+    public void testN1() {
+         T_xor_int_lit8_1 t = new T_xor_int_lit8_1();
+         assertEquals(7, t.run());
+     }
+
+    /**
+     * @title Arguments = 0xfffffff8, 0xf1
+     */
+    public void testN2() {
+         T_xor_int_lit8_2 t = new T_xor_int_lit8_2();
+         assertEquals(9, t.run());
+     }
+    
+    /**
+     * @title Type of argument - float. Dalvik doens't distinguish 32-bits types internally,
+     * so this (float ^ int) makes no sense but shall not crash the VM.  
+     */
+    public void testN3() {
+        T_xor_int_lit8_7 t = new T_xor_int_lit8_7();
+        try {
+            t.run(3.14f);
+        } catch (Throwable e) {
+        }
+    }
+    
+    /**
+     * @title Arguments = 0, -1
+     */
+    public void testB1() {
+        T_xor_int_lit8_3 t = new T_xor_int_lit8_3();
+            assertEquals(-1, t.run());
+    }
+
+    /**
+     * @title Arguments = Integer.MAX_VALUE, Byte.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_int_lit8_4 t = new T_xor_int_lit8_4();
+            assertEquals(-2147483521, t.run());
+    }
+
+    
+
+    /**
+     * @constraint B1
+     * @title types of arguments - long, int
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B1 
+     * @title  types of arguments - reference, int
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    /**
+     * @constraint A23 
+     * @title  number of registers
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_8");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.d
new file mode 100644
index 0000000..cb4d830
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit8_1.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 15
+       xor-int/lit16 v1, v1, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.java
new file mode 100644
index 0000000..ff2c78b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_1 {
+
+    public int run() {
+        return 15 ^ 8;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.d
new file mode 100644
index 0000000..8d23bf6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit8_2.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v2, -8
+       xor-int/lit16 v1, v2, -15
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.java
new file mode 100644
index 0000000..d62fd56
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_2 {
+
+    public int run() {
+        return 0xfffffff8 ^ 0xf1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.d
new file mode 100644
index 0000000..5953574
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit8_3.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 0
+       xor-int/lit16 v1, v1, -1
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.java
new file mode 100644
index 0000000..31fa48c
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_3.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_3 {
+
+    public int run() {
+        return 0 ^ -1;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.d
new file mode 100644
index 0000000..c2270c4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit8_4.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       const v1, 2147483647
+       xor-int/lit16 v1, v1, -128
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.java
new file mode 100644
index 0000000..6b2d4f7
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_4.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_4 {
+
+    public int run() {
+        return Integer.MAX_VALUE ^ Byte.MIN_VALUE;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.d
new file mode 100644
index 0000000..3a3da2b
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_5.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit8_5.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 4
+
+       const-wide/16 v2, 12345
+       xor-int/lit8 v1, v2, -128
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.d
new file mode 100644
index 0000000..b3ab7e4
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit8_6.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()I
+.limit regs 3
+
+       xor-int/lit16 v1, v2, 1
+       return v1    
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.d
new file mode 100644
index 0000000..74bf7e5
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit8_7.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_7
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(F)I
+.limit regs 3
+
+       xor-int/lit16 v1, v2, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.java
new file mode 100644
index 0000000..ecd3130
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_7.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_int_lit8.d;
+
+public class T_xor_int_lit8_7 {
+
+    public int run(float f) {
+        return 0;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.d
new file mode 100644
index 0000000..0857ea6
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_int_lit8/d/T_xor_int_lit8_8.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_int_lit8_8.java
+.class public dot.junit.opcodes.xor_int_lit8.d.T_xor_int_lit8_8
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(I)I
+.limit regs 3
+
+       xor-int/lit16 v1, v3, 8
+       return v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/Test_xor_long.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/Test_xor_long.java
new file mode 100644
index 0000000..dac7041
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/Test_xor_long.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_long;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_long.d.T_xor_long_1;
+import dot.junit.opcodes.xor_long.d.T_xor_long_2;
+
+public class Test_xor_long extends DxTestCase {
+    /**
+     * @title Arguments = 23423432423777l, 23423432423778l
+     */
+    public void testN1() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(3, t.run(23423432423777l, 23423432423778l));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff5, 0xfffffff1
+     */
+    public void testN2() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(4, t.run(0xfffffff5, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xABCDEFAB & -1
+     */
+    public void testN3() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(0x54321054, t.run(0xABCDEFAB, -1l));
+    }
+    
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this (double ^ long ) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_xor_long_2 t = new T_xor_long_2();
+        try {
+            t.run(3.14d, 1234l);
+        } catch (Throwable e) {
+        }
+    } 
+
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(0xffffffff, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MAX_VALUE
+     */
+    public void testB3() {
+        T_xor_long_1 t = new T_xor_long_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title number of registers
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long.d.T_xor_long_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+    
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long.d.T_xor_long_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title types of arguments - float, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long.d.T_xor_long_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long.d.T_xor_long_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.d
new file mode 100644
index 0000000..fb345ea
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_long_1.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.java
new file mode 100644
index 0000000..9389b63
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_long.d;
+
+public class T_xor_long_1 {
+
+    public long run(long a, long b) {
+        return a ^ b; 
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.d
new file mode 100644
index 0000000..52f7815
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_long_2.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DJ)J
+.limit regs 5
+
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.java
new file mode 100644
index 0000000..64a5a9a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_long.d;
+
+public class T_xor_long_2 {
+
+    public long run(double a, long b) {
+        return 0; 
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.d
new file mode 100644
index 0000000..2042970
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_long_3.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       const/16 v3, 1234    
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.d
new file mode 100644
index 0000000..28e9fff
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_long_4.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       const v3, 1234.0
+       xor-long v1, v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.d
new file mode 100644
index 0000000..a48545f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_long_5.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long v1, v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.d
new file mode 100644
index 0000000..0e2c18f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long/d/T_xor_long_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_long_6.java
+.class public dot.junit.opcodes.xor_long.d.T_xor_long_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long v1, v1, v5
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/Test_xor_long_2addr.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/Test_xor_long_2addr.java
new file mode 100644
index 0000000..8e4a4bc
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/Test_xor_long_2addr.java
@@ -0,0 +1,142 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_long_2addr;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+import dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_1;
+import dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_2;
+
+public class Test_xor_long_2addr extends DxTestCase {
+    /**
+     * @title Arguments = 23423432423777l, 23423432423778l
+     */
+    public void testN1() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(3, t.run(23423432423777l, 23423432423778l));
+    }
+
+    /**
+     * @title Arguments = 0xfffffff5, 0xfffffff1
+     */
+    public void testN2() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(4, t.run(0xfffffff5, 0xfffffff1));
+    }
+
+    /**
+     * @title Arguments = 0xABCDEFAB & -1
+     */
+    public void testN3() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(0x54321054, t.run(0xABCDEFAB, -1l));
+    }
+
+    /**
+     * @title Types of arguments - double, long. Dalvik doens't distinguish 64-bits types internally,
+     * so this (double ^ long ) makes no sense but shall not crash the VM.  
+     */
+    public void testN4() {
+        T_xor_long_2addr_2 t = new T_xor_long_2addr_2();
+        try {
+            t.run(3.14d, 1234l);
+        } catch (Throwable e) {
+        }
+    } 
+
+    
+    /**
+     * @title Arguments = 0 & -1
+     */
+    public void testB1() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(-1l, t.run(0l, -1l));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MIN_VALUE
+     */
+    public void testB2() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(0xffffffff, t.run(Long.MAX_VALUE, Long.MIN_VALUE));
+    }
+
+    /**
+     * @title Arguments = Long.MAX_VALUE & Long.MAX_VALUE
+     */
+    public void testB3() {
+        T_xor_long_2addr_1 t = new T_xor_long_2addr_1();
+        assertEquals(0l, t.run(Long.MAX_VALUE, Long.MAX_VALUE));
+    }
+
+    /**
+     * @constraint A24 
+     * @title  (number of registers).
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_6");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+    
+    
+
+
+    /**
+     * @constraint B1 
+     * @title types of arguments - int, long
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title types of arguments - float, long
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * 
+     * @constraint B1 
+     * @title types of arguments - reference, long
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.d
new file mode 100644
index 0000000..7d84e33
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_long_2addr_1.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_1
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.java
new file mode 100644
index 0000000..f146b32
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_1.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_long_2addr.d;
+
+public class T_xor_long_2addr_1 {
+
+    public long run(long a, long b) {
+        return a ^ b; 
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.d
new file mode 100644
index 0000000..977ce09
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_long_2addr_2.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_2
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(DJ)J
+.limit regs 5
+
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.java b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.java
new file mode 100644
index 0000000..dfa4c0f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.opcodes.xor_long_2addr.d;
+
+public class T_xor_long_2addr_2 {
+
+    public long run(double a, long b) {
+        return 0; 
+    }
+}
\ No newline at end of file
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.d
new file mode 100644
index 0000000..d578efe
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_3.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_long_2addr_3.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_3
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       const/16 v3, 1234    
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.d
new file mode 100644
index 0000000..98c0cd8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_4.d
@@ -0,0 +1,35 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_long_2addr_4.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_4
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       const v3, 1234.0
+       xor-long/2addr v1, v3
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.d
new file mode 100644
index 0000000..a69d6ca
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_long_2addr_5.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_5
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long/2addr v1, v0
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.d b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.d
new file mode 100644
index 0000000..2533783
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/opcodes/xor_long_2addr/d/T_xor_long_2addr_6.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_xor_long_2addr_6.java
+.class public dot.junit.opcodes.xor_long_2addr.d.T_xor_long_2addr_6
+.super java/lang/Object
+
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run(JJ)J
+.limit regs 5
+
+       xor-long/2addr v1, v5
+       return-wide v1
+.end method
+
+
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/AllTests.java b/tools/vm-tests-tf/src/dot/junit/verify/AllTests.java
new file mode 100644
index 0000000..b4314f8
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/AllTests.java
@@ -0,0 +1,44 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.verify;
+
+import junit.framework.Test;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+/**
+ * Listing of all the tests that are to be run.
+ */
+public class AllTests {
+
+    public static void run() {
+        TestRunner.main(new String[] {AllTests.class.getName()});
+    }
+
+    public static final Test suite() {
+        TestSuite suite = new TestSuite("Tests for dalvik vm: test that "
+                + "structurally damaged files are rejected by the verifier");
+        suite.addTestSuite(dot.junit.verify.a1.Test_a1.class);
+        suite.addTestSuite(dot.junit.verify.a3.Test_a3.class);
+        suite.addTestSuite(dot.junit.verify.a5.Test_a5.class);
+        suite.addTestSuite(dot.junit.verify.b2.Test_b2.class);
+        suite.addTestSuite(dot.junit.verify.b3.Test_b3.class);
+        suite.addTestSuite(dot.junit.verify.b17.Test_b17.class);
+
+        return suite;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a1/Test_a1.java b/tools/vm-tests-tf/src/dot/junit/verify/a1/Test_a1.java
new file mode 100644
index 0000000..bf8f35e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a1/Test_a1.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008  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 dot.junit.verify.a1;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_a1 extends DxTestCase {
+
+    /**
+     * @constraint A1
+     *
+     * @title empty insns array
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.a1.d.T_a1_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.d b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.d
new file mode 100644
index 0000000..fae89bb
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.d
@@ -0,0 +1,29 @@
+; Copyright (C) 2008 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.
+
+.source T_a1_1.java
+.class public dot.junit.verify.a1.d.T_a1_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 2
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.dfh b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.dfh
new file mode 100644
index 0000000..2c11f5f
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_1.dfh
@@ -0,0 +1,237 @@
+// Processing 'out/classes_dasm/dot/junit/verify/a1/d/T_a1_1.dex'...
+// Opened 'out/classes_dasm/dot/junit/verify/a1/d/T_a1_1.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : fa4f3449
+    49 34 4F FA 
+// parsed: offset 12, len 20: signature           : ea5e...e61c
+    EA 5E DC 6D AF F0 4E 0F CA BF 0E 8F FE 43 DE 4F 78 5B E6 1C 
+// parsed: offset 32, len 4: file_size           : 480
+    E0 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 356 (0x000164)
+    64 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 264
+    08 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 260 (0x000104) "<init>"
+    04 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 268 (0x00010c) "Ldot/junit/verify/a1/d/T_a1_1;"
+    0C 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 300 (0x00012c) "Ljava/lang/Object;"
+    2C 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 320 (0x000140) "T_a1_1.java"
+    40 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 333 (0x00014d) "V"
+    4D 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 336 (0x000150) "run"
+    50 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/verify/a1/d/T_a1_1;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/verify/a1/d/T_a1_1;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_b1_1.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 341 (0x000155)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 55 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.verify.a1.d.T_a1_1.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.verify.a1.d.T_a1_1.run"
+    // parsed: offset 240, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 1
+//@mod        01 00 00 00 
+        00 00 00 00 
+    // insns:
+        // parsed: offset 256, len 2: |0000: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 258, len 2: PADDING
+    00 00 
+// parsed: offset 260, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 268, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/verify/a1/d/T_a1_1;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 76 65 72 69 66 79 2F 61 31 2F 64 2F 54 5F 61 31 5F 31 3B 00 
+// parsed: offset 300, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 320, len 13: TYPE_STRING_DATA_ITEM [3] "T_a1_1.java"
+    0B 54 5F 61 31 5F 31 2E 6A 61 76 61 00 
+// parsed: offset 333, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 336, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/verify/a1/d/T_a1_1;"
+    // parsed: offset 341, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 342, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 343, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 344, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 345, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 346, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 349, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 351, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 352, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 353, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 355, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 356, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 360, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 372, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 384, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 396, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 408, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 420, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 432, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 444, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 260 (0x000104)
+        02 20 00 00 06 00 00 00 04 01 00 00 
+    // parsed: offset 456, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 341 (0x000155)
+        00 20 00 00 01 00 00 00 55 01 00 00 
+    // parsed: offset 468, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 356 (0x000164)
+        00 10 00 00 01 00 00 00 64 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_2.java b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_2.java
new file mode 100644
index 0000000..c7e6694
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a1/d/T_a1_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.verify.a1.d;
+
+/**
+ *
+ */
+public class T_a1_2 {
+    // dummy
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a3/Test_a3.java b/tools/vm-tests-tf/src/dot/junit/verify/a3/Test_a3.java
new file mode 100644
index 0000000..94d5cb3
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a3/Test_a3.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.verify.a3;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_a3 extends DxTestCase {
+
+    /**
+     * @constraint A3
+     * 
+     * @title The insns array must only contain valid Dalvik opcodes. 
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.a3.d.T_a3_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.d b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.d
new file mode 100644
index 0000000..0f8d599
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_a3_1.java
+.class public dot.junit.verify.a3.d.T_a3_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 2
+    nop
+    nop
+    nop
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.dfh b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.dfh
new file mode 100644
index 0000000..0ca04de
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_1.dfh
@@ -0,0 +1,241 @@
+// Processing 'out/classes_dasm/dot/junit/verify/a3/d/T_a3_1.dex'...
+// Opened 'out/classes_dasm/dot/junit/verify/a3/d/T_a3_1.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : be8e34ae
+    AE 34 8E BE 
+// parsed: offset 12, len 20: signature           : 816e...af7b
+    81 6E 56 5F D0 A5 2E 3F EC 43 2E 24 E4 3D F9 E8 F6 F5 AF 7B 
+// parsed: offset 32, len 4: file_size           : 484
+    E4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 360 (0x000168)
+    68 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 268
+    0C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 264 (0x000108) "<init>"
+    08 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 272 (0x000110) "Ldot/junit/verify/a3/d/T_a3_1;"
+    10 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 304 (0x000130) "Ljava/lang/Object;"
+    30 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 324 (0x000144) "T_a3_1.java"
+    44 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 337 (0x000151) "V"
+    51 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 340 (0x000154) "run"
+    54 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/verify/a3/d/T_a3_1;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/verify/a3/d/T_a3_1;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_a3_1.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 345 (0x000159)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 59 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.verify.a3.d.T_a3_1.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.verify.a3.d.T_a3_1.run"
+    // parsed: offset 240, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 256, len 2: |0000: nop // spacer
+//@mod            00 00         
+            FF FF 
+        // parsed: offset 258, len 2: |0001: nop // spacer
+            00 00 
+        // parsed: offset 260, len 2: |0002: nop // spacer
+            00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 264, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 272, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/verify/a3/d/T_a3_1;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 76 65 72 69 66 79 2F 61 33 2F 64 2F 54 5F 61 33 5F 31 3B 00 
+// parsed: offset 304, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 324, len 13: TYPE_STRING_DATA_ITEM [3] "T_a3_1.java"
+    0B 54 5F 61 33 5F 31 2E 6A 61 76 61 00 
+// parsed: offset 337, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 340, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/verify/a3/d/T_a3_1;"
+    // parsed: offset 345, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 346, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 347, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 348, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 349, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 350, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 353, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 355, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 356, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 357, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 359, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 360, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 364, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 376, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 388, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 400, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 412, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 424, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 436, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 448, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 264 (0x000108)
+        02 20 00 00 06 00 00 00 08 01 00 00 
+    // parsed: offset 460, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 345 (0x000159)
+        00 20 00 00 01 00 00 00 59 01 00 00 
+    // parsed: offset 472, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 360 (0x000168)
+        00 10 00 00 01 00 00 00 68 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_2.java b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_2.java
new file mode 100644
index 0000000..9e5fbad
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a3/d/T_a3_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.verify.a3.d;
+
+/**
+ *
+ */
+public class T_a3_2 {
+    // dummy
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a5/Test_a5.java b/tools/vm-tests-tf/src/dot/junit/verify/a5/Test_a5.java
new file mode 100644
index 0000000..e821028
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a5/Test_a5.java
@@ -0,0 +1,38 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.verify.a5;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_a5 extends DxTestCase {
+
+    /**
+     * @constraint A5
+     * 
+     * @title The last instruction in the insns array must end at index insns_size-1.  
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.a5.d.T_a5_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.d b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.d
new file mode 100644
index 0000000..898e900
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_a5_1.java
+.class public dot.junit.verify.a5.d.T_a5_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 2
+    nop
+    nop
+    nop
+    return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.dfh b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.dfh
new file mode 100644
index 0000000..a35f00e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_1.dfh
@@ -0,0 +1,241 @@
+// Processing 'out/classes_dasm/dot/junit/verify/a5/d/T_a5_1.dex'...
+// Opened 'out/classes_dasm/dot/junit/verify/a5/d/T_a5_1.dex', DEX version '035'
+// DEX file header:
+// parsed: offset 0, len 8: magic               : 'dex
+// 035'
+    64 65 78 0A 30 33 35 00 
+// parsed: offset 8, len 4: checksum            : 1acf344e
+    4E 34 CF 1A 
+// parsed: offset 12, len 20: signature           : 60c2...28af
+    60 C2 30 F0 A8 17 C1 F1 B9 47 0E D8 9D BD C6 0B E9 34 28 AF 
+// parsed: offset 32, len 4: file_size           : 484
+    E4 01 00 00 
+// parsed: offset 36, len 4: header_size         : 112
+    70 00 00 00 
+// parsed: offset 40, len 4: endian_tag          : 0x12345678
+    78 56 34 12 
+// parsed: offset 44, len 4: link_size           : 0
+    00 00 00 00 
+// parsed: offset 48, len 4: link_off            : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 52, len 4: map_off             : 360 (0x000168)
+    68 01 00 00 
+// parsed: offset 56, len 4: string_ids_size     : 6
+    06 00 00 00 
+// parsed: offset 60, len 4: string_ids_off      : 112 (0x000070)
+    70 00 00 00 
+// parsed: offset 64, len 4: type_ids_size       : 3
+    03 00 00 00 
+// parsed: offset 68, len 4: type_ids_off        : 136 (0x000088)
+    88 00 00 00 
+// parsed: offset 72, len 4: proto_ids_size      : 1
+    01 00 00 00 
+// parsed: offset 76, len 4: proto_ids_off       : 148 (0x000094)
+    94 00 00 00 
+// parsed: offset 80, len 4: field_ids_size      : 0
+    00 00 00 00 
+// parsed: offset 84, len 4: field_ids_off       : 0 (0x000000)
+    00 00 00 00 
+// parsed: offset 88, len 4: method_ids_size     : 3
+    03 00 00 00 
+// parsed: offset 92, len 4: method_ids_off      : 160 (0x0000a0)
+    A0 00 00 00 
+// parsed: offset 96, len 4: class_defs_size     : 1
+    01 00 00 00 
+// parsed: offset 100, len 4: class_defs_off      : 184 (0x0000b8)
+    B8 00 00 00 
+// parsed: offset 104, len 4: data_size           : 268
+    0C 01 00 00 
+// parsed: offset 108, len 4: data_off            : 216 (0x0000d8)
+    D8 00 00 00 
+// 
+// string_ids:
+// parsed: offset 112, len 4: [0] string_data_off: 264 (0x000108) "<init>"
+    08 01 00 00 
+// parsed: offset 116, len 4: [1] string_data_off: 272 (0x000110) "Ldot/junit/verify/a5/d/T_a5_1;"
+    10 01 00 00 
+// parsed: offset 120, len 4: [2] string_data_off: 304 (0x000130) "Ljava/lang/Object;"
+    30 01 00 00 
+// parsed: offset 124, len 4: [3] string_data_off: 324 (0x000144) "T_a5_1.java"
+    44 01 00 00 
+// parsed: offset 128, len 4: [4] string_data_off: 337 (0x000151) "V"
+    51 01 00 00 
+// parsed: offset 132, len 4: [5] string_data_off: 340 (0x000154) "run"
+    54 01 00 00 
+
+// type_ids:
+// parsed: offset 136, len 4: [0] descriptor_idx: 1 (0x000001) "Ldot/junit/verify/a5/d/T_a5_1;"
+    01 00 00 00 
+// parsed: offset 140, len 4: [1] descriptor_idx: 2 (0x000002) "Ljava/lang/Object;"
+    02 00 00 00 
+// parsed: offset 144, len 4: [2] descriptor_idx: 4 (0x000004) "V"
+    04 00 00 00 
+
+// proto_ids:
+// parsed: offset 148, len 12: [0] 
+//     shorty_idx: 4 (0x000004) "V"
+//     return_type_idx: 2 (0x000002) "V"
+//     parameters_off: 0 (0x000000)
+    04 00 00 00 02 00 00 00 00 00 00 00 
+
+// field_ids:
+
+// methods_ids:
+// parsed: offset 160, len 8: [0] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    00 00 00 00 00 00 00 00 
+// parsed: offset 168, len 8: [1] class_idx: 0 (0x000000)  proto_idx: 0 (0x000000) name_idx: 5 (0x000005) "run"
+    00 00 00 00 05 00 00 00 
+// parsed: offset 176, len 8: [2] class_idx: 1 (0x000001)  proto_idx: 0 (0x000000) name_idx: 0 (0x000000) "<init>"
+    01 00 00 00 00 00 00 00 
+
+// class_defs:
+// parsed: offset 184, len 32: Class [0]
+//     class_idx: 0 "Ldot/junit/verify/a5/d/T_a5_1;"
+//     access_flags: 0x000001 (PUBLIC)
+//     superclass_idx: 1 "Ljava/lang/Object;"
+//     interfaces_off: 0 (0x000000)
+//     source_file_idx: 3 "T_a5_1.java"
+//     annotations_off: 0 (0x000000)
+//     class_data_off: 345 (0x000159)
+//     static_values_off: 0 (0x000000)
+    00 00 00 00 01 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 59 01 00 00 00 00 00 00 
+// data_section:
+// CODE_ITEM for "dot.junit.verify.a5.d.T_a5_1.<init>"
+    // parsed: offset 216, len 2: registers_size: 1
+        01 00 
+    // parsed: offset 218, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 220, len 2: outs_size: 1
+        01 00 
+    // parsed: offset 222, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 224, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 228, len 4: insns_size: 4
+        04 00 00 00 
+    // insns:
+        // parsed: offset 232, len 6: |0000: invoke-direct {v0}, Ljava/lang/Object;.<init>:()V // method@0002
+            70 10 02 00 00 00 
+        // parsed: offset 238, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// CODE_ITEM for "dot.junit.verify.a5.d.T_a5_1.run"
+    // parsed: offset 240, len 2: registers_size: 2
+        02 00 
+    // parsed: offset 242, len 2: ins_size: 1
+        01 00 
+    // parsed: offset 244, len 2: outs_size: 0
+        00 00 
+    // parsed: offset 246, len 2: tries_size: 0
+        00 00 
+    // parsed: offset 248, len 4: debug_info_off: 0 (0x000000)
+        00 00 00 00 
+    // parsed: offset 252, len 4: insns_size: 4
+//@mod        04 00 00 00 
+        05 00 00 00 
+    // insns:
+        // parsed: offset 256, len 2: |0000: nop // spacer
+            00 00 
+        // parsed: offset 258, len 2: |0001: nop // spacer
+            00 00 
+        // parsed: offset 260, len 2: |0002: nop // spacer
+            00 00 
+        // parsed: offset 262, len 2: |0003: return-void
+            0E 00 
+    // tries: 
+    // handlers: 
+// parsed: offset 264, len 8: TYPE_STRING_DATA_ITEM [0] "<init>"
+    06 3C 69 6E 69 74 3E 00 
+// parsed: offset 272, len 32: TYPE_STRING_DATA_ITEM [1] "Ldot/junit/verify/a5/d/T_a5_1;"
+    1E 4C 64 6F 74 2F 6A 75 6E 69 74 2F 76 65 72 69 66 79 2F 61 35 2F 64 2F 54 5F 61 35 5F 31 3B 00 
+// parsed: offset 304, len 20: TYPE_STRING_DATA_ITEM [2] "Ljava/lang/Object;"
+    12 4C 6A 61 76 61 2F 6C 61 6E 67 2F 4F 62 6A 65 63 74 3B 00 
+// parsed: offset 324, len 13: TYPE_STRING_DATA_ITEM [3] "T_a5_1.java"
+    0B 54 5F 61 35 5F 31 2E 6A 61 76 61 00 
+// parsed: offset 337, len 3: TYPE_STRING_DATA_ITEM [4] "V"
+    01 56 00 
+// parsed: offset 340, len 5: TYPE_STRING_DATA_ITEM [5] "run"
+    03 72 75 6E 00 
+// CLASS_DATA_ITEM for class [0] "Ldot/junit/verify/a5/d/T_a5_1;"
+    // parsed: offset 345, len 1: static_fields_size: 0
+        00 
+    // parsed: offset 346, len 1: instance_fields_size: 0
+        00 
+    // parsed: offset 347, len 1: direct_methods_size: 1
+        01 
+    // parsed: offset 348, len 1: virtual_methods_size: 1
+        01 
+    // static_fields:
+    // instance_fields:
+    // direct_methods:
+        // method [0]:
+            // parsed: offset 349, len 1: method_idx_diff: 0 (method_idx: 0 "<init>")
+                00 
+            // parsed: offset 350, len 3: access_flags: 0x010001 (PUBLIC CONSTRUCTOR)
+                81 80 04 
+            // parsed: offset 353, len 2: code_off: 216 (0x0000d8)
+                D8 01 
+    // virtual_methods:
+        // method [0]:
+            // parsed: offset 355, len 1: method_idx_diff: 1 (method_idx: 1 "run")
+                01 
+            // parsed: offset 356, len 1: access_flags: 0x000001 (PUBLIC)
+                01 
+            // parsed: offset 357, len 2: code_off: 240 (0x0000f0)
+                F0 01 
+// parsed: offset 359, len 1: PADDING
+    00 
+// map_list:
+    // parsed: offset 360, len 4: size: 10
+        0A 00 00 00 
+    // parsed: offset 364, len 12: [0] type: 0x0000 TYPE_HEADER_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 0 (0x000000)
+        00 00 00 00 01 00 00 00 00 00 00 00 
+    // parsed: offset 376, len 12: [1] type: 0x0001 TYPE_STRING_ID_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 112 (0x000070)
+        01 00 00 00 06 00 00 00 70 00 00 00 
+    // parsed: offset 388, len 12: [2] type: 0x0002 TYPE_TYPE_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 136 (0x000088)
+        02 00 00 00 03 00 00 00 88 00 00 00 
+    // parsed: offset 400, len 12: [3] type: 0x0003 TYPE_PROTO_ID_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 148 (0x000094)
+        03 00 00 00 01 00 00 00 94 00 00 00 
+    // parsed: offset 412, len 12: [4] type: 0x0005 TYPE_METHOD_ID_ITEM
+    //      unused: 0
+    //      size: 3
+    //      offset: 160 (0x0000a0)
+        05 00 00 00 03 00 00 00 A0 00 00 00 
+    // parsed: offset 424, len 12: [5] type: 0x0006 TYPE_CLASS_DEF_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 184 (0x0000b8)
+        06 00 00 00 01 00 00 00 B8 00 00 00 
+    // parsed: offset 436, len 12: [6] type: 0x2001 TYPE_CODE_ITEM
+    //      unused: 0
+    //      size: 2
+    //      offset: 216 (0x0000d8)
+        01 20 00 00 02 00 00 00 D8 00 00 00 
+    // parsed: offset 448, len 12: [7] type: 0x2002 TYPE_STRING_DATA_ITEM
+    //      unused: 0
+    //      size: 6
+    //      offset: 264 (0x000108)
+        02 20 00 00 06 00 00 00 08 01 00 00 
+    // parsed: offset 460, len 12: [8] type: 0x2000 TYPE_CLASS_DATA_ITEM
+    //      unused: 0
+    //      size: 1
+    //      offset: 345 (0x000159)
+        00 20 00 00 01 00 00 00 59 01 00 00 
+    // parsed: offset 472, len 12: [9] type: 0x1000 TYPE_MAP_LIST
+    //      unused: 0
+    //      size: 1
+    //      offset: 360 (0x000168)
+        00 10 00 00 01 00 00 00 68 01 00 00 
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_2.java b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_2.java
new file mode 100644
index 0000000..5f99d46
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/a5/d/T_a5_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.verify.a5.d;
+
+/**
+ *
+ */
+public class T_a5_2 {
+    // dummy
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b17/Test_b17.java b/tools/vm-tests-tf/src/dot/junit/verify/b17/Test_b17.java
new file mode 100644
index 0000000..4c14f08
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b17/Test_b17.java
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.verify.b17;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_b17 extends DxTestCase {
+
+    /**
+     * Having throw, return and backward goto as a last opcode in the method is tested
+     * as part of corresponding opcodes tests.
+     */
+    
+    /**
+     * @constraint B17
+     * 
+     * @title attempt to leave insns array without return or throw.
+     * Since this constraint is trivial to be checked by the verifier,
+     * it is sufficient to have a trivial test.
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.b17.d.T_b17_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_1.d b/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_1.d
new file mode 100644
index 0000000..11715c2
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_1.d
@@ -0,0 +1,30 @@
+; Copyright (C) 2008 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.
+
+.source T_b17_1.java
+.class public dot.junit.verify.b17.d.T_b17_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 2
+
+       const/16 v0, 123 
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_2.java b/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_2.java
new file mode 100644
index 0000000..d1745e9
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b17/d/T_b17_2.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.verify.b17.d;
+
+/**
+ *
+ */
+public class T_b17_2 {
+    // dummy
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/Test_b2.java b/tools/vm-tests-tf/src/dot/junit/verify/b2/Test_b2.java
new file mode 100644
index 0000000..55ea386
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/Test_b2.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.verify.b2;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_b2 extends DxTestCase {
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE3() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_3");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE4() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_4");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B2
+     * @title attempt to mess around with register-pairs.
+     */
+    public void testVFE5() {
+        try {
+            Class.forName("dot.junit.verify.b2.d.T_b2_5");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.d
new file mode 100644
index 0000000..1fe908a
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_b2_1.java
+.class public dot.junit.verify.b2.d.T_b2_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 123
+       move v1, v0 ; illegal read access to v1
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.java b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.java
new file mode 100644
index 0000000..9ca108e
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_1.java
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.verify.b2.d;
+
+public class T_b2_1 {
+    public void run() {
+        long a = 123;
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_2.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_2.d
new file mode 100644
index 0000000..a885c41
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_2.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_b2_2.java
+.class public dot.junit.verify.b2.d.T_b2_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const-wide v0, 123 
+       move v0, v1 ; // illegal read access to v0
+       return-void
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_3.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_3.d
new file mode 100644
index 0000000..bf8d6e0
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_3.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_b2_3.java
+.class public dot.junit.verify.b2.d.T_b2_3
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       const v0, 123 
+       const v1, 123 
+       move-wide v2, v0 ; // illegal read access to v0/1
+       return-void
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_4.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_4.d
new file mode 100644
index 0000000..bb158ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_4.d
@@ -0,0 +1,33 @@
+; Copyright (C) 2008 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.
+
+.source T_b2_4.java
+.class public dot.junit.verify.b2.d.T_b2_4
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 4
+
+       const-wide v0, 123
+       move v2, v0 ; // illegal read access to v0
+       return-void
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_5.d b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_5.d
new file mode 100644
index 0000000..483066d
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b2/d/T_b2_5.d
@@ -0,0 +1,34 @@
+; Copyright (C) 2008 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.
+
+.source T_b2_5.java
+.class public dot.junit.verify.b2.d.T_b2_5
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 5
+
+       const-wide v0, 123
+       move-wide v2, v0
+       move-wide v2, v1 ; // illegal read access to v1/2
+       return-void
+.end method
+
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b3/Test_b3.java b/tools/vm-tests-tf/src/dot/junit/verify/b3/Test_b3.java
new file mode 100644
index 0000000..1aefb11
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b3/Test_b3.java
@@ -0,0 +1,49 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.verify.b3;
+
+import dot.junit.DxTestCase;
+import dot.junit.DxUtil;
+
+public class Test_b3 extends DxTestCase {
+
+    /**
+     * @constraint B3
+     * @title register (or pair) has to be assigned first before it can be read. 
+     */
+    public void testVFE1() {
+        try {
+            Class.forName("dot.junit.verify.b3.d.T_b3_1");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+
+    /**
+     * @constraint B3
+     * @title register (or pair) has to be assigned first before it can be read. 
+     */
+    public void testVFE2() {
+        try {
+            Class.forName("dot.junit.verify.b3.d.T_b3_2");
+            fail("expected a verification exception");
+        } catch (Throwable t) {
+            DxUtil.checkVerifyException(t);
+        }
+    }
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_0.java b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_0.java
new file mode 100644
index 0000000..0f0a5ce
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_0.java
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2008 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 dot.junit.verify.b3.d;
+
+/**
+*
+*/
+public class T_b3_0 {
+   // dummy
+}
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_1.d b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_1.d
new file mode 100644
index 0000000..ffcd819
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_1.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_b3_1.java
+.class public dot.junit.verify.b3.d.T_b3_1
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 3
+
+       const v0, 123
+       move v2, v1
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_2.d b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_2.d
new file mode 100644
index 0000000..96feb07
--- /dev/null
+++ b/tools/vm-tests-tf/src/dot/junit/verify/b3/d/T_b3_2.d
@@ -0,0 +1,32 @@
+; Copyright (C) 2008 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.
+
+.source T_b3_2.java
+.class public dot.junit.verify.b3.d.T_b3_2
+.super java/lang/Object
+
+.method public <init>()V
+.limit regs 1
+
+       invoke-direct {v0}, java/lang/Object/<init>()V
+       return-void
+.end method
+
+.method public run()V
+.limit regs 10
+
+       const-wide v0, 123
+       long-to-int v3, v1
+       return-void
+.end method
diff --git a/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java b/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java
new file mode 100644
index 0000000..af7097f
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/BuildDalvikSuite.java
@@ -0,0 +1,690 @@
+/*
+ * Copyright (C) 2011 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 util.build;
+
+import com.android.dx.util.FileUtils;
+
+import dot.junit.AllTests;
+
+import junit.framework.TestCase;
+import junit.framework.TestResult;
+import junit.framework.TestSuite;
+import junit.textui.TestRunner;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.IOException;
+import java.io.OutputStreamWriter;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Scanner;
+import java.util.Set;
+import java.util.TreeSet;
+import java.util.Map.Entry;
+import java.util.regex.MatchResult;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * Main class to generate data from the test suite to later run from a shell
+ * script. the project's home folder.<br>
+ * <project-home>/src must contain the java sources<br>
+ * <project-home>/src/<for-each-package>/Main_testN1.java will be generated<br>
+ * (one Main class for each test method in the Test_... class
+ */
+public class BuildDalvikSuite {
+
+    public static boolean DEBUG = true;
+
+    private static String JAVASRC_FOLDER = "";
+    private static String MAIN_SRC_OUTPUT_FOLDER = "";
+
+    // the folder for the generated junit-files for the cts host (which in turn
+    // execute the real vm tests using adb push/shell etc)
+    private static String HOSTJUNIT_SRC_OUTPUT_FOLDER = "";
+    private static String OUTPUT_FOLDER = "";
+    private static String COMPILED_CLASSES_FOLDER = "";
+
+    private static String CLASSES_OUTPUT_FOLDER = "";
+    private static String HOSTJUNIT_CLASSES_OUTPUT_FOLDER = "";
+
+    private static String CLASS_PATH = "";
+
+    private static String restrictTo = null; // e.g. restrict to "opcodes.add_double"
+
+    private static final String TARGET_JAR_ROOT_PATH = "/data/local/tmp/vm-tests";
+
+    private int testClassCnt = 0;
+    private int testMethodsCnt = 0;
+
+    /*
+     * using a linked hashmap to keep the insertion order for iterators.
+     * the junit suite/tests adding order is used to generate the order of the
+     * report.
+     * a map. key: fully qualified class name, value: a list of test methods for
+     * the given class
+     */
+    private LinkedHashMap<String, List<String>> map = new LinkedHashMap<String,
+    List<String>>();
+
+    private class MethodData {
+        String methodBody, constraint, title;
+    }
+
+    /**
+     * @param args
+     *            args 0 must be the project root folder (where src, lib etc.
+     *            resides)
+     * @throws IOException
+     */
+    public static void main(String[] args) throws IOException {
+
+        if (args.length > 5) {
+            JAVASRC_FOLDER = args[0];
+            OUTPUT_FOLDER = args[1];
+            CLASS_PATH = args[2];
+            MAIN_SRC_OUTPUT_FOLDER = args[3];
+            CLASSES_OUTPUT_FOLDER = MAIN_SRC_OUTPUT_FOLDER + "/classes";
+
+            COMPILED_CLASSES_FOLDER = args[4];
+
+            HOSTJUNIT_SRC_OUTPUT_FOLDER = args[5];
+            HOSTJUNIT_CLASSES_OUTPUT_FOLDER = HOSTJUNIT_SRC_OUTPUT_FOLDER + "/classes";
+
+            if (args.length > 6) {
+                // optional: restrict to e.g. "opcodes.add_double"
+                restrictTo = args[6];
+                System.out.println("restricting build to: " + restrictTo);
+            }
+
+        } else {
+            System.out.println("usage: java-src-folder output-folder classpath " +
+                    "generated-main-files compiled_output generated-main-files " +
+            "[restrict-to-opcode]");
+            System.exit(-1);
+        }
+
+        long start = System.currentTimeMillis();
+        BuildDalvikSuite cat = new BuildDalvikSuite();
+        cat.compose();
+        long end = System.currentTimeMillis();
+
+        System.out.println("elapsed seconds: " + (end - start) / 1000);
+    }
+
+    public void compose() throws IOException {
+        System.out.println("Collecting all junit tests...");
+        new TestRunner() {
+            @Override
+            protected TestResult createTestResult() {
+                return new TestResult() {
+                    @Override
+                    protected void run(TestCase test) {
+                        addToTests(test);
+                    }
+
+                };
+            }
+        }.doRun(AllTests.suite());
+
+        // for each combination of TestClass and method, generate a Main_testN1
+        // class in the respective package.
+        // for the report make sure all N... tests are called first, then B,
+        // then E, then VFE test methods.
+        // e.g. dxc.junit.opcodes.aaload.Test_aaload - testN1() ->
+        // File Main_testN1.java in package dxc.junit.opcodes.aaload.
+        //
+        handleTests();
+    }
+
+    private void addToTests(TestCase test) {
+
+        String packageName = test.getClass().getPackage().getName();
+        packageName = packageName.substring(packageName.lastIndexOf('.'));
+
+
+        String method = test.getName(); // e.g. testVFE2
+        String fqcn = test.getClass().getName(); // e.g.
+        // dxc.junit.opcodes.iload_3.Test_iload_3
+
+        // ignore all tests not belonging to the given restriction
+        if (restrictTo != null && !fqcn.contains(restrictTo)) return;
+
+        testMethodsCnt++;
+        List<String> li = map.get(fqcn);
+        if (li == null) {
+            testClassCnt++;
+            li = new ArrayList<String>();
+            map.put(fqcn, li);
+        }
+        li.add(method);
+    }
+    private String curJunitFileName = null;
+    private String curJunitFileData = "";
+
+    private JavacBuildStep javacHostJunitBuildStep;
+
+    private void flushHostJunitFile() {
+        if (curJunitFileName != null) {
+            File toWrite = new File(curJunitFileName);
+            String absPath = toWrite.getAbsolutePath();
+            // add to java source files for later compilation
+            javacHostJunitBuildStep.addSourceFile(absPath);
+            // write file
+            curJunitFileData += "\n}\n";
+            writeToFileMkdir(toWrite, curJunitFileData);
+            curJunitFileName = null;
+            curJunitFileData = "";
+        }
+    }
+
+    private void openCTSHostFileFor(String pName, String classOnlyName) {
+        // flush previous JunitFile
+        flushHostJunitFile();
+        String sourceName = "JUnit_" + classOnlyName;
+
+        // prepare current testcase-file
+        curJunitFileName = HOSTJUNIT_SRC_OUTPUT_FOLDER + "/" + pName.replaceAll("\\.","/") + "/" +
+        sourceName + ".java";
+        curJunitFileData = getWarningMessage() +
+        "package " + pName + ";\n" +
+        "import java.io.IOException;\n" +
+        "import com.android.tradefed.testtype.DeviceTestCase;\n" +
+        "\n" +
+        "public class " + sourceName + " extends DeviceTestCase {\n";
+    }
+
+    private String getShellExecJavaLine(String classpath, String mainclass) {
+      String cmd = String.format("dalvikvm -Xint:portable -Xmx512M -Xss32K -Djava.io.tmpdir=%s" +
+                                 " -classpath %s %s", TARGET_JAR_ROOT_PATH, classpath, mainclass);
+      return "String res = getDevice().executeShellCommand(\""+ cmd + "\");\n" +
+             "// A sucessful adb shell command returns an empty string.\n" +
+             "assertTrue(res.length() == 0);";
+    }
+
+    private String getWarningMessage() {
+        return "//Autogenerated code by " + this.getClass().getName() + "; do not edit.\n";
+    }
+
+    private void addCTSHostMethod(String pName, String method, MethodData md,
+            Set<String> dependentTestClassNames) {
+        curJunitFileData += "public void " + method + "() throws Exception {\n";
+        final String targetCoreJarPath = String.format("%s/dot/junit/dexcore.jar",
+                TARGET_JAR_ROOT_PATH);
+
+        // push class with Main jar.
+        String mjar = "Main_" + method + ".jar";
+        String pPath = pName.replaceAll("\\.","/");
+        String mainJar = String.format("%s/%s/%s", TARGET_JAR_ROOT_PATH, pPath, mjar);
+
+        String cp = String.format("%s:%s", targetCoreJarPath, mainJar);
+        for (String depFqcn : dependentTestClassNames) {
+            int lastDotPos = depFqcn.lastIndexOf('.');
+            String sourceName = depFqcn.replaceAll("\\.", "/") + ".jar";
+            String targetName= String.format("%s/%s", TARGET_JAR_ROOT_PATH,
+                    sourceName);
+            cp += ":" + targetName;
+            // dot.junit.opcodes.invoke_interface_range.ITest
+            // -> dot/junit/opcodes/invoke_interface_range/ITest.jar
+        }
+
+        //"dot.junit.opcodes.add_double_2addr.Main_testN2";
+        String mainclass = pName + ".Main_" + method;
+        curJunitFileData += "    " + getShellExecJavaLine(cp, mainclass);
+        curJunitFileData += "}\n\n";
+    }
+
+    private void handleTests() throws IOException {
+        System.out.println("collected " + testMethodsCnt + " test methods in " +
+                testClassCnt + " junit test classes");
+        Set<BuildStep> targets = new TreeSet<BuildStep>();
+
+        javacHostJunitBuildStep = new JavacBuildStep(HOSTJUNIT_CLASSES_OUTPUT_FOLDER, CLASS_PATH);
+
+
+        JavacBuildStep javacBuildStep = new JavacBuildStep(
+                CLASSES_OUTPUT_FOLDER, CLASS_PATH);
+
+        for (Entry<String, List<String>> entry : map.entrySet()) {
+
+            String fqcn = entry.getKey();
+            int lastDotPos = fqcn.lastIndexOf('.');
+            String pName = fqcn.substring(0, lastDotPos);
+            String classOnlyName = fqcn.substring(lastDotPos + 1);
+            String instPrefix = "new " + classOnlyName + "()";
+
+            openCTSHostFileFor(pName, classOnlyName);
+
+            List<String> methods = entry.getValue();
+            Collections.sort(methods, new Comparator<String>() {
+                public int compare(String s1, String s2) {
+                    // TODO sort according: test ... N, B, E, VFE
+                    return s1.compareTo(s2);
+                }
+            });
+            for (String method : methods) {
+                // e.g. testN1
+                if (!method.startsWith("test")) {
+                    throw new RuntimeException("no test method: " + method);
+                }
+
+                // generate the Main_xx java class
+
+                // a Main_testXXX.java contains:
+                // package <packagenamehere>;
+                // public class Main_testxxx {
+                // public static void main(String[] args) {
+                // new dxc.junit.opcodes.aaload.Test_aaload().testN1();
+                // }
+                // }
+                MethodData md = parseTestMethod(pName, classOnlyName, method);
+                String methodContent = md.methodBody;
+
+                Set<String> dependentTestClassNames = parseTestClassName(pName,
+                        classOnlyName, methodContent);
+
+                addCTSHostMethod(pName, method, md, dependentTestClassNames);
+
+
+                if (dependentTestClassNames.isEmpty()) {
+                    continue;
+                }
+
+
+                String content = getWarningMessage() +
+                "package " + pName + ";\n" +
+                "import " + pName + ".d.*;\n" +
+                "import dot.junit.*;\n" +
+                "public class Main_" + method + " extends DxAbstractMain {\n" +
+                "    public static void main(String[] args) throws Exception {" +
+                methodContent + "\n}\n";
+
+                String fileName = getFileName(pName, method, ".java");
+                File sourceFile = getFileFromPackage(pName, method);
+
+                File classFile = new File(CLASSES_OUTPUT_FOLDER + "/" +
+                        getFileName(pName, method, ".class"));
+                // if (sourceFile.lastModified() > classFile.lastModified()) {
+                writeToFile(sourceFile, content);
+                javacBuildStep.addSourceFile(sourceFile.getAbsolutePath());
+
+                BuildStep dexBuildStep = generateDexBuildStep(
+                        CLASSES_OUTPUT_FOLDER, getFileName(pName, method, ""));
+                targets.add(dexBuildStep);
+                // }
+
+                generateBuildStepFor(pName, method, dependentTestClassNames,
+                        targets);
+            }
+
+
+        }
+
+        // write latest HOSTJUNIT generated file.
+        flushHostJunitFile();
+
+        if (!javacHostJunitBuildStep.build()) {
+            System.out.println("main javac cts-host-hostjunit-classes build step failed");
+            System.exit(1);
+        }
+
+        if (javacBuildStep.build()) {
+            for (BuildStep buildStep : targets) {
+                if (!buildStep.build()) {
+                    System.out.println("building failed. buildStep: " +
+                            buildStep.getClass().getName() + ", " + buildStep);
+                    System.exit(1);
+                }
+            }
+        } else {
+            System.out.println("main javac dalvik-cts-buildutil build step failed");
+            System.exit(1);
+        }
+    }
+
+    private void generateBuildStepFor(String pName, String method,
+            Set<String> dependentTestClassNames, Set<BuildStep> targets) {
+
+
+        for (String dependentTestClassName : dependentTestClassNames) {
+            generateBuildStepForDependant(dependentTestClassName, targets);
+        }
+    }
+
+    private void generateBuildStepForDependant(String dependentTestClassName,
+            Set<BuildStep> targets) {
+
+        File sourceFolder = new File(JAVASRC_FOLDER);
+        String fileName = dependentTestClassName.replace('.', '/').trim();
+
+        if (new File(sourceFolder, fileName + ".dfh").exists()) {
+
+            BuildStep.BuildFile inputFile = new BuildStep.BuildFile(
+                    JAVASRC_FOLDER, fileName + ".dfh");
+            BuildStep.BuildFile dexFile = new BuildStep.BuildFile(
+                    OUTPUT_FOLDER, fileName + ".dex");
+
+            DFHBuildStep buildStep = new DFHBuildStep(inputFile, dexFile);
+
+            BuildStep.BuildFile jarFile = new BuildStep.BuildFile(
+                    OUTPUT_FOLDER, fileName + ".jar");
+            JarBuildStep jarBuildStep = new JarBuildStep(dexFile,
+                    "classes.dex", jarFile, true);
+            jarBuildStep.addChild(buildStep);
+
+            targets.add(jarBuildStep);
+            return;
+        }
+
+        if (new File(sourceFolder, fileName + ".d").exists()) {
+
+            BuildStep.BuildFile inputFile = new BuildStep.BuildFile(
+                    JAVASRC_FOLDER, fileName + ".d");
+            BuildStep.BuildFile dexFile = new BuildStep.BuildFile(
+                    OUTPUT_FOLDER, fileName + ".dex");
+
+            DasmBuildStep buildStep = new DasmBuildStep(inputFile, dexFile);
+
+            BuildStep.BuildFile jarFile = new BuildStep.BuildFile(
+                    OUTPUT_FOLDER, fileName + ".jar");
+
+            JarBuildStep jarBuildStep = new JarBuildStep(dexFile,
+                    "classes.dex", jarFile, true);
+            jarBuildStep.addChild(buildStep);
+            targets.add(jarBuildStep);
+            return;
+        }
+
+        if (new File(sourceFolder, fileName + ".java").exists()) {
+
+            BuildStep dexBuildStep = generateDexBuildStep(
+                    COMPILED_CLASSES_FOLDER, fileName);
+            targets.add(dexBuildStep);
+            return;
+        }
+
+        try {
+            if (Class.forName(dependentTestClassName) != null) {
+
+                BuildStep dexBuildStep = generateDexBuildStep(
+                        COMPILED_CLASSES_FOLDER, fileName);
+                targets.add(dexBuildStep);
+                return;
+            }
+        } catch (ClassNotFoundException e) {
+            // do nothing
+        }
+
+        throw new RuntimeException("neither .dfh,.d,.java file of dependant test class found : " +
+                dependentTestClassName + ";" + fileName);
+    }
+
+    private BuildStep generateDexBuildStep(String classFileFolder,
+            String classFileName) {
+        BuildStep.BuildFile classFile = new BuildStep.BuildFile(
+                classFileFolder, classFileName + ".class");
+
+        BuildStep.BuildFile tmpJarFile = new BuildStep.BuildFile(OUTPUT_FOLDER,
+                classFileName + "_tmp.jar");
+
+        JarBuildStep jarBuildStep = new JarBuildStep(classFile, classFileName +
+                ".class", tmpJarFile, false);
+
+        BuildStep.BuildFile outputFile = new BuildStep.BuildFile(OUTPUT_FOLDER,
+                classFileName + ".jar");
+
+        DexBuildStep dexBuildStep = new DexBuildStep(tmpJarFile, outputFile,
+                true);
+
+        dexBuildStep.addChild(jarBuildStep);
+        return dexBuildStep;
+
+    }
+
+    /**
+     * @param pName
+     * @param classOnlyName
+     * @param methodSource
+     * @return testclass names
+     */
+    private Set<String> parseTestClassName(String pName, String classOnlyName,
+            String methodSource) {
+        Set<String> entries = new HashSet<String>();
+        String opcodeName = classOnlyName.substring(5);
+
+        Scanner scanner = new Scanner(methodSource);
+
+        String[] patterns = new String[] {"new\\s(T_" + opcodeName + "\\w*)",
+                "(T_" + opcodeName + "\\w*)", "new\\s(T\\w*)"};
+
+        String token = null;
+        for (String pattern : patterns) {
+            token = scanner.findWithinHorizon(pattern, methodSource.length());
+            if (token != null) {
+                break;
+            }
+        }
+
+        if (token == null) {
+            System.err.println("warning: failed to find dependent test class name: " + pName +
+                    ", " + classOnlyName + " in methodSource:\n" + methodSource);
+            return entries;
+        }
+
+        MatchResult result = scanner.match();
+
+        entries.add((pName + ".d." + result.group(1)).trim());
+
+        // search additional @uses directives
+        Pattern p = Pattern.compile("@uses\\s+(.*)\\s+", Pattern.MULTILINE);
+        Matcher m = p.matcher(methodSource);
+        while (m.find()) {
+            String res = m.group(1);
+            entries.add(res.trim());
+        }
+
+        // lines with the form @uses
+        // dot.junit.opcodes.add_double.jm.T_add_double_2
+        // one dependency per one @uses
+        // TODO
+
+        return entries;
+    }
+
+    private MethodData parseTestMethod(String pname, String classOnlyName,
+            String method) {
+
+        String path = pname.replaceAll("\\.", "/");
+        String absPath = JAVASRC_FOLDER + "/" + path + "/" + classOnlyName + ".java";
+        File f = new File(absPath);
+
+        Scanner scanner;
+        try {
+            scanner = new Scanner(f);
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("error while reading to file: " + e.getClass().getName() +
+                    ", msg:" + e.getMessage());
+        }
+
+        String methodPattern = "public\\s+void\\s+" + method + "[^\\{]+\\{";
+
+        String token = scanner.findWithinHorizon(methodPattern, (int) f.length());
+        if (token == null) {
+            throw new RuntimeException("cannot find method source of 'public void " + method +
+                    "' in file '" + absPath + "'");
+        }
+
+        MatchResult result = scanner.match();
+        result.start();
+        result.end();
+
+        StringBuilder builder = new StringBuilder();
+        //builder.append(token);
+
+        try {
+            FileReader reader = new FileReader(f);
+            reader.skip(result.end());
+
+            char currentChar;
+            int blocks = 1;
+            while ((currentChar = (char) reader.read()) != -1 && blocks > 0) {
+                switch (currentChar) {
+                    case '}': {
+                        blocks--;
+                        builder.append(currentChar);
+                        break;
+                    }
+                    case '{': {
+                        blocks++;
+                        builder.append(currentChar);
+                        break;
+                    }
+                    default: {
+                        builder.append(currentChar);
+                        break;
+                    }
+                }
+            }
+            if (reader != null) {
+                reader.close();
+            }
+        } catch (Exception e) {
+            throw new RuntimeException("failed to parse", e);
+        }
+
+        // find the @title/@constraint in javadoc comment for this method
+        Scanner scanner2;
+        try {
+            // using platform's default charset
+            scanner2 = new Scanner(f);
+        } catch (FileNotFoundException e) {
+            throw new RuntimeException("error while reading to file: " + e.getClass().getName() +
+                    ", msg:" + e.getMessage());
+        }
+        // using platform's default charset
+        String all = new String(FileUtils.readFile(f));
+        // System.out.println("grepping javadoc found for method " + method +
+        // " in " + pname + "," + classOnlyName);
+        String commentPattern = "/\\*\\*([^{]*)\\*/\\s*" + methodPattern;
+        Pattern p = Pattern.compile(commentPattern, Pattern.DOTALL);
+        Matcher m = p.matcher(all);
+        String title = null, constraint = null;
+        if (m.find()) {
+            String res = m.group(1);
+            // System.out.println("res: " + res);
+            // now grep @title and @constraint
+            Matcher titleM = Pattern.compile("@title (.*)", Pattern.DOTALL)
+            .matcher(res);
+            if (titleM.find()) {
+                title = titleM.group(1).replaceAll("\\n     \\*", "");
+                title = title.replaceAll("\\n", " ");
+                title = title.trim();
+                // System.out.println("title: " + title);
+            } else {
+                System.err.println("warning: no @title found for method " + method + " in " + pname +
+                        "," + classOnlyName);
+            }
+            // constraint can be one line only
+            Matcher constraintM = Pattern.compile("@constraint (.*)").matcher(
+                    res);
+            if (constraintM.find()) {
+                constraint = constraintM.group(1);
+                constraint = constraint.trim();
+                // System.out.println("constraint: " + constraint);
+            } else if (method.contains("VFE")) {
+                System.err
+                .println("warning: no @constraint for for a VFE method:" + method + " in " +
+                        pname + "," + classOnlyName);
+            }
+        } else {
+            System.err.println("warning: no javadoc found for method " + method + " in " + pname +
+                    "," + classOnlyName);
+        }
+        MethodData md = new MethodData();
+        md.methodBody = builder.toString();
+        md.constraint = constraint;
+        md.title = title;
+        if (scanner != null) {
+            scanner.close();
+        }
+        if (scanner2 != null) {
+            scanner.close();
+        }
+        return md;
+    }
+
+    private void writeToFileMkdir(File file, String content) {
+        File parent = file.getParentFile();
+        if (!parent.exists() && !parent.mkdirs()) {
+            throw new RuntimeException("failed to create directory: " + parent.getAbsolutePath());
+        }
+        writeToFile(file, content);
+    }
+
+    private void writeToFile(File file, String content) {
+        try {
+            if (file.length() == content.length()) {
+                FileReader reader = new FileReader(file);
+                char[] charContents = new char[(int) file.length()];
+                reader.read(charContents);
+                String contents = new String(charContents);
+                if (contents.equals(content)) {
+                    // System.out.println("skipping identical: "
+                    // + file.getAbsolutePath());
+                    return;
+                }
+            }
+
+            //System.out.println("writing file " + file.getAbsolutePath());
+
+            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
+                    new FileOutputStream(file), "utf-8"));
+            bw.write(content);
+            bw.close();
+        } catch (Exception e) {
+            throw new RuntimeException("error while writing to file: " + e.getClass().getName() +
+                    ", msg:" + e.getMessage());
+        }
+    }
+
+    private File getFileFromPackage(String pname, String methodName)
+    throws IOException {
+        // e.g. dxc.junit.argsreturns.pargsreturn
+        String path = getFileName(pname, methodName, ".java");
+        String absPath = MAIN_SRC_OUTPUT_FOLDER + "/" + path;
+        File dirPath = new File(absPath);
+        File parent = dirPath.getParentFile();
+        if (!parent.exists() && !parent.mkdirs()) {
+            throw new IOException("failed to create directory: " + absPath);
+        }
+        return dirPath;
+    }
+
+    private String getFileName(String pname, String methodName,
+            String extension) {
+        String path = pname.replaceAll("\\.", "/");
+        return new File(path, "Main_" + methodName + extension).getPath();
+    }
+}
diff --git a/tools/vm-tests-tf/src/util/build/BuildStep.java b/tools/vm-tests-tf/src/util/build/BuildStep.java
new file mode 100644
index 0000000..dbc6bca
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/BuildStep.java
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2008 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 util.build;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.nio.channels.FileChannel;
+import java.util.HashSet;
+import java.util.Set;
+
+abstract class BuildStep implements Comparable<BuildStep> {
+
+    BuildFile inputFile;
+    BuildFile outputFile;
+
+    static class BuildFile {
+        final File folder;
+        final File fileName;
+
+        BuildFile(String folder, String fileName) {
+            this.folder = new File(folder);
+            this.fileName = new File(this.folder, fileName);
+        }
+
+        String getPath() {
+            return fileName.getAbsolutePath();
+        }
+
+        @Override
+        public int hashCode() {
+            return fileName.hashCode();
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (obj == null) return false;
+            if (this == obj) return true;
+            if (getClass() == obj.getClass()) {
+                BuildFile other = (BuildFile) obj;
+                return fileName.equals(other.fileName);
+            }
+            return false;
+        }
+    }
+
+    BuildStep(BuildFile inputFile, BuildFile outputFile) {
+        if (inputFile == null) {
+            throw new NullPointerException("inputFile is null");
+        }
+        if (outputFile == null) {
+            throw new NullPointerException("outputFile is null");
+        }
+        this.inputFile = inputFile;
+        this.outputFile = outputFile;
+    }
+
+    BuildStep() {
+    }
+
+    private Set<BuildStep> children;
+
+    boolean build() {
+        if (children != null) {
+            for (BuildStep child : children) {
+                if (!child.build()) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == null) return false;
+        if (obj == this) return true;
+        return this.getClass() == obj.getClass();
+    }
+
+    @Override
+    public abstract int hashCode();
+
+    public void addChild(BuildStep child) {
+        if (children == null) {
+            children = new HashSet<BuildStep>();
+        }
+        children.add(child);
+    }
+
+    public static void copyFile(File in, File out) throws IOException {
+        FileChannel inChannel = new FileInputStream(in).getChannel();
+        FileChannel outChannel = new FileOutputStream(out).getChannel();
+        try {
+            inChannel.transferTo(0, inChannel.size(), outChannel);
+        } catch (IOException e) {
+            throw e;
+        } finally {
+            if (inChannel != null) inChannel.close();
+            if (outChannel != null) outChannel.close();
+        }
+    }
+
+    public int compareTo(BuildStep o) {
+        return (inputFile == o.inputFile ? 0 : (inputFile != null
+                ? (o.inputFile != null ? inputFile.getPath().compareTo(
+                        o.inputFile.getPath()) : 1) : -1));
+    }
+}
diff --git a/tools/vm-tests-tf/src/util/build/DFHBuildStep.java b/tools/vm-tests-tf/src/util/build/DFHBuildStep.java
new file mode 100644
index 0000000..47a81bf
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/DFHBuildStep.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2008 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 util.build;
+
+import dxconvext.ClassFileAssembler;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
+import java.io.FileReader;
+import java.io.OutputStream;
+import java.io.Reader;
+
+public class DFHBuildStep extends BuildStep {
+
+    public DFHBuildStep(BuildFile inputFile, BuildFile outputFile) {
+        super(inputFile, outputFile);
+    }
+
+    @Override
+    boolean build() {
+        if (super.build()) {
+            File out_dir = outputFile.fileName.getParentFile();
+            if (!out_dir.exists() && !out_dir.mkdirs()) {
+                System.err.println("failed to create dir: "
+                        + out_dir.getAbsolutePath());
+                return false;
+            }
+
+            ClassFileAssembler cfAssembler = new ClassFileAssembler();
+            Reader r;
+            OutputStream os;
+            try {
+                r = new FileReader(inputFile.fileName);
+                os = new FileOutputStream(outputFile.fileName);
+            } catch (FileNotFoundException e) {
+                System.err.println(e);
+                return false;
+            }
+            try {
+                // cfAssembler throws a runtime exception
+                cfAssembler.writeClassFile(r, os, true);
+            } catch (RuntimeException e) {
+                System.err.println("error in DFHBuildStep for inputfile "+inputFile.fileName+", outputfile "+outputFile.fileName);
+                throw e;
+            }
+            
+            return true;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+
+        if (super.equals(obj)) {
+            return inputFile.equals(((DFHBuildStep) obj).inputFile)
+                    && outputFile.equals(((DFHBuildStep) obj).outputFile);
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return (inputFile == null ? 31 : inputFile.hashCode())
+                ^ (outputFile == null ? 37 : outputFile.hashCode());
+    }
+}
diff --git a/tools/vm-tests-tf/src/util/build/DasmBuildStep.java b/tools/vm-tests-tf/src/util/build/DasmBuildStep.java
new file mode 100644
index 0000000..b77a491
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/DasmBuildStep.java
@@ -0,0 +1,175 @@
+/*
+ * Copyright (C) 2008 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 util.build;
+
+import dasm.DAsm;
+import dasm.DasmError;
+import dasm.Utils;
+
+import java.io.BufferedReader;
+import java.io.Closeable;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.FileWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+
+class DasmBuildStep extends BuildStep {
+
+
+    boolean generate_linenum = false;
+
+    DasmBuildStep(BuildFile inputFile, BuildFile outputFile) {
+        super(inputFile, outputFile);
+
+    }
+
+    @Override
+    boolean build() {
+        if (super.build()) {
+            return assemble(inputFile.fileName);
+        }
+        return false;
+    }
+
+    private static Reader createReader(String fname) throws IOException {
+        FileInputStream fs = new FileInputStream(fname);
+        InputStreamReader ir;
+        ir = new InputStreamReader(fs);
+        return new BufferedReader(ir);
+    }
+    
+    private boolean assemble(File file) {
+        DAsm dAsm = new DAsm();
+        String fname = file.getAbsolutePath();
+        
+        // read and parse .d file
+        Reader inp = null; 
+        try {
+            inp = createReader(fname);
+            dAsm.readD(inp, new File(fname).getName(), generate_linenum);
+            close(inp);
+        } catch(DasmError e) {
+            if(BuildDalvikSuite.DEBUG)
+                e.printStackTrace();
+            System.err.println("DASM Error: " + e.getMessage());
+        } catch(Exception e) {
+             if(BuildDalvikSuite.DEBUG)
+                 e.printStackTrace();
+             System.err.println("Exception <" + e.getClass().getName() + ">" + e.getMessage() + 
+                         " while reading and parsing " + fname);
+             return false;
+             
+        }
+        finally {
+            close(inp);
+        }
+        
+        if(dAsm.errorCount() > 0) {
+            System.err.println("Found " + dAsm.errorCount() + " errors " +
+                    " while reading and parsing " + fname);
+                return false;
+        }
+
+        String class_path[] = Utils.getClassFieldFromString(dAsm.getClassName());
+        String class_name = class_path[1];
+
+        // determine where to place .dex file
+        String dest_dir = outputFile.folder.getAbsolutePath();
+        if (class_path[0] != null) {
+            String class_dir = class_path[0].replaceAll("/|\\.", Character.toString(File.separatorChar));                                           
+            if (dest_dir != null) {
+                dest_dir = dest_dir + File.separator + class_dir;
+            } else {
+                dest_dir = class_dir;
+            }
+        }
+            
+        File out_file = null;
+        
+        if (dest_dir == null) {
+            out_file = new File(class_name + ".dex");
+        } else {
+            out_file = new File(dest_dir, class_name + ".dex");
+
+            // check that dest_dir exists
+            File dest = new File(dest_dir);
+            if (!dest.exists()) {
+                dest.mkdirs();
+            }
+
+            if (!dest.isDirectory()) {
+                System.err.println("Cannot create directory " + dest_dir);
+                return false;
+            }
+        }
+         
+        // write output
+        FileOutputStream outp = null;
+
+        try {
+            outp = new FileOutputStream(out_file);
+            dAsm.write(outp, null);
+        } catch(Exception e) {
+                if(BuildDalvikSuite.DEBUG)
+                e.printStackTrace();
+                System.err.println("Exception <" + e.getClass().getName() + ">" + e.getMessage() + 
+                        " while writing " + out_file.getPath());
+
+                close(outp);
+
+                out_file.delete();
+
+                return false;
+       }
+       finally {
+           close(outp);
+       }
+
+       return true;
+    }
+    
+    private static void close(Closeable c) {
+        if(c == null)
+            return;
+        try {
+            c.close();
+        } catch(IOException e) {
+            
+        }
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (super.equals(obj)) {
+            DasmBuildStep other = (DasmBuildStep) obj;
+
+            return inputFile.equals(other.inputFile)
+                    && generate_linenum == other.generate_linenum
+                    && outputFile.equals(other.outputFile);
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return inputFile.hashCode() ^ outputFile.hashCode()
+                ^ (generate_linenum ? 31 : 37);
+    }
+}
diff --git a/tools/vm-tests-tf/src/util/build/DexBuildStep.java b/tools/vm-tests-tf/src/util/build/DexBuildStep.java
new file mode 100644
index 0000000..6aba51c
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/DexBuildStep.java
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2008 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 util.build;
+
+import com.android.dx.command.dexer.Main;
+import java.io.IOException;
+
+public class DexBuildStep extends BuildStep {
+
+    private final boolean deleteInputFileAfterBuild;
+
+    DexBuildStep(BuildFile inputFile, BuildFile outputFile,
+            boolean deleteInputFileAfterBuild) {
+        super(inputFile, outputFile);
+        this.deleteInputFileAfterBuild = deleteInputFileAfterBuild;
+    }
+
+    @Override
+    boolean build() {
+
+        if (super.build()) {
+            Main.Arguments args = new Main.Arguments();
+
+            args.jarOutput = true;
+            args.fileNames = new String[] {inputFile.fileName.getAbsolutePath()};
+
+            args.outName = outputFile.fileName.getAbsolutePath();
+
+            int result = 0;
+            try {
+                result = Main.run(args);
+            } catch (IOException e) {
+                e.printStackTrace();
+                return false;
+            }
+
+            if (result == 0) {
+                if (deleteInputFileAfterBuild) {
+                    inputFile.fileName.delete();
+                }
+                return true;
+            } else {
+                System.err.println("exception while dexing "
+                        + inputFile.fileName.getAbsolutePath() + " to "
+                        + args.outName);
+                return false;
+            }
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return inputFile.hashCode() ^ outputFile.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (super.equals(obj)) {
+            DexBuildStep other = (DexBuildStep) obj;
+
+            return inputFile.equals(other.inputFile)
+                    && outputFile.equals(other.outputFile);
+        }
+        return false;
+    }
+
+
+}
diff --git a/tools/vm-tests-tf/src/util/build/JarBuildStep.java b/tools/vm-tests-tf/src/util/build/JarBuildStep.java
new file mode 100644
index 0000000..776e9059
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/JarBuildStep.java
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2008 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 util.build;
+
+import sun.tools.jar.Main;
+
+import java.io.File;
+import java.io.IOException;
+
+
+public class JarBuildStep extends BuildStep {
+
+    String destFileName;
+    private final boolean deleteInputFileAfterBuild;
+
+    public JarBuildStep(BuildFile inputFile, String destFileName,
+            BuildFile outputFile, boolean deleteInputFileAfterBuild) {
+        super(inputFile, outputFile);
+        this.destFileName = destFileName;
+        this.deleteInputFileAfterBuild = deleteInputFileAfterBuild;
+    }
+
+    @Override
+    boolean build() {
+        if (super.build()) {
+            File tempFile = new File(inputFile.folder, destFileName);
+            try {
+                if (!inputFile.fileName.equals(tempFile)) {
+                    copyFile(inputFile.fileName, tempFile);
+                } else {
+                    tempFile = null;
+                }
+            } catch (IOException e) {
+                System.err.println("io exception:"+e.getMessage());
+                e.printStackTrace();
+                return false;
+            }
+
+            File outDir = outputFile.fileName.getParentFile();
+            if (!outDir.exists() && !outDir.mkdirs()) {
+                System.err.println("failed to create output dir: "
+                        + outDir.getAbsolutePath());
+                return false;
+            }
+            String[] arguments = new String[] {
+                    "-cMf", outputFile.fileName.getAbsolutePath(), "-C",
+                    inputFile.folder.getAbsolutePath(), destFileName};
+            Main main = new Main(System.out, System.err, "jar");
+            boolean success = main.run(arguments);
+
+            if (success) {
+                if (tempFile != null) {
+                    tempFile.delete();
+                }
+                if (deleteInputFileAfterBuild) {
+                    inputFile.fileName.delete();
+                }
+            } else {
+                System.err.println("exception in JarBuildStep while calling jar with args:" +
+                        " \"-cMf\", "+outputFile.fileName.getAbsolutePath()+", \"-C\"," + 
+                        inputFile.folder.getAbsolutePath()+", "+ destFileName);
+            }
+            return success;
+        }
+        return false;
+    }
+
+    @Override
+    public int hashCode() {
+        return inputFile.hashCode() ^ outputFile.hashCode()
+                ^ destFileName.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (super.equals(obj)) {
+            JarBuildStep other = (JarBuildStep) obj;
+            return inputFile.equals(other.inputFile)
+                    && outputFile.equals(other.outputFile)
+                    && destFileName.equals(other.destFileName);
+
+        }
+        return false;
+    }
+
+}
diff --git a/tools/vm-tests-tf/src/util/build/JavacBuildStep.java b/tools/vm-tests-tf/src/util/build/JavacBuildStep.java
new file mode 100644
index 0000000..7d7033f
--- /dev/null
+++ b/tools/vm-tests-tf/src/util/build/JavacBuildStep.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2008 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 util.build;
+
+import com.sun.tools.javac.Main;
+
+import java.io.File;
+import java.io.PrintWriter;
+import java.util.HashSet;
+import java.util.Set;
+
+public class JavacBuildStep extends BuildStep {
+
+    private final String destPath;
+    private final String classPath;
+    private final Set<String> sourceFiles = new HashSet<String>();
+    public JavacBuildStep(String destPath, String classPath) {
+        this.destPath = destPath;
+        this.classPath = classPath;
+    }
+    
+    public void addSourceFile(String sourceFile)
+    {
+        sourceFiles.add(sourceFile);
+    }
+    
+    @Override
+    boolean build() {
+        if (super.build())
+        {
+            if (sourceFiles.isEmpty())
+            {
+                return true;
+            }
+            
+            File destFile = new File(destPath);
+            if (!destFile.exists() && !destFile.mkdirs())
+            {
+                System.err.println("failed to create destination dir");
+                return false;
+            }
+            int args = 4;
+            String[] commandLine = new String[sourceFiles.size()+args];
+            commandLine[0] = "-classpath";
+            commandLine[1] = classPath;
+            commandLine[2] = "-d";
+            commandLine[3] = destPath;
+             
+            String[] files = new String[sourceFiles.size()];
+            sourceFiles.toArray(files);
+            
+            System.arraycopy(files, 0, commandLine, args, files.length);
+            
+            
+            return Main.compile(commandLine, new PrintWriter(System.err)) == 0;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        // TODO Auto-generated method stub
+        if (super.equals(obj))
+        {
+            JavacBuildStep other = (JavacBuildStep) obj;
+            return destPath.equals(other.destPath) 
+                && classPath.equals(other.classPath)
+                && sourceFiles.equals(other.sourceFiles);
+        }
+        return false;
+    }
+    
+    @Override
+    public int hashCode() {
+        return destPath.hashCode() ^ classPath.hashCode() ^ sourceFiles.hashCode();
+    }
+}
diff --git a/tools/vm-tests/src/util/build/DexBuildStep.java b/tools/vm-tests/src/util/build/DexBuildStep.java
index cc65af9..6aba51c 100644
--- a/tools/vm-tests/src/util/build/DexBuildStep.java
+++ b/tools/vm-tests/src/util/build/DexBuildStep.java
@@ -17,6 +17,7 @@
 package util.build;
 
 import com.android.dx.command.dexer.Main;
+import java.io.IOException;
 
 public class DexBuildStep extends BuildStep {
 
@@ -39,7 +40,13 @@
 
             args.outName = outputFile.fileName.getAbsolutePath();
 
-            int result = Main.run(args);
+            int result = 0;
+            try {
+                result = Main.run(args);
+            } catch (IOException e) {
+                e.printStackTrace();
+                return false;
+            }
 
             if (result == 0) {
                 if (deleteInputFileAfterBuild) {